在 swiftui 不工作的警报后显示确认警报

Posted

技术标签:

【中文标题】在 swiftui 不工作的警报后显示确认警报【英文标题】:presenting a confirm alert after an alert with swiftui not working 【发布时间】:2020-11-11 09:05:51 【问题描述】:

我正在尝试在您按下第一个警报上的“确认”按钮后显示确认警报。 想法:您按下一个按钮,会弹出一个警报,要求您取消或确认该操作。当您按下取消时,警报被解除,当您按下确认时,操作被执行并弹出第二个警报,上面写着类似(标题:“成功”,消息:“操作成功)”,只有一个解除按钮. 第一个警报工作正常并且它执行操作,但是当我在第一个警报之后添加第二个警报时,按下按钮时第一个警报将不再显示。

代码:

Group 
            Button(action:  self.showingAdminAlert = true , label: 
                                    Text("Als Admin hinzufügen").fontWeight(.bold).font(.system(size: 15)).padding().background(Color.gray).cornerRadius(40).foregroundColor(.white).padding(10).overlay(RoundedRectangle(cornerRadius: 40).stroke(Color.gray, lineWidth: 5))
            ).padding().padding()
            .alert(isPresented: $showingAdminAlert) 
                Alert(title: Text("Bestätigung erforderlich"), message: Text("Wollen sie \(data.vn) \(data.nn) wirklich die Berechtigung Admin erteilen?"), primaryButton: .cancel(Text("Abbrechen")), secondaryButton: .default(Text("Bestätigen")) 
                    self.AddUserAsAdmin()
                    self.showingAdminAlertConfirmation = true
                    )
            .alert(isPresented: $showingAdminAlertConfirmation) 
                Alert(title: Text("Erfolgreich"), message: Text("Berechtigung Admin erfolgreich an \(data.vn) \(data.nn) vergeben!"), dismissButton: .default(Text("Zurück")))
            

【问题讨论】:

每个视图只能有一个警报。您可以使用类似于***.com/questions/58737767/… 的方法组合警报。一旦第一个警报被解除,您可能还需要延迟显示第二个警报。 【参考方案1】:
import SwiftUI

struct ContentView: View

    @State var showAlert: Bool = false
    @State var showingAdminAlertConfirmation: Bool = false

    var body: some View 
        
        let Bestätigung =  Alert(title: Text("Bestätigung erforderlich"), message: Text("wirklich die Berechtigung Admin erteilen?"), primaryButton: .cancel(Text("Abbrechen")), secondaryButton: .default(Text("Bestätigen")) showingAdminAlertConfirmation = true; DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) showAlert = true     )
        let Erfolgreich = Alert(title: Text("Erfolgreich"), message: Text("Berechtigung Admin erfolgreich an vergeben!"), dismissButton: .default(Text("Zurück")) showAlert = false; showingAdminAlertConfirmation = false   )

        Button(action:  showAlert = true , label: 
            Text("Als Admin hinzufügen").fontWeight(.bold).font(.system(size: 15)).padding().background(Color.gray).cornerRadius(40).foregroundColor(.white).padding(10).overlay(RoundedRectangle(cornerRadius: 40).stroke(Color.gray, lineWidth: 5))
        )
        .padding().padding()
        .alert(isPresented: $showAlert)  showingAdminAlertConfirmation ? Erfolgreich : Bestätigung

        
        
        
    

【讨论】:

以上是关于在 swiftui 不工作的警报后显示确认警报的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中的全局警报

如何使用 SwiftUI 连续呈现两个警报视图

使用确认警报 ASP.Net 单击 Gridview LinkBut​​ton 上的突出显示行

SwiftUI 基于计算属性显示警报

检测页面上是不是显示警报或确认

使用 MVVM 在 SwiftUI 中显示警报