在swiftui无效的警报后显示确认警报

时间:2020-11-11 09:05:51

标签: swiftui swiftui-alert

在第一个警报上按下“确认”按钮后,我试图显示确认警报。 提示:您按下按钮,然后弹出警报,要求您取消或确认操作。当您按“取消”时,警报将被取消,而当您按“确认”时,将执行该操作,并弹出第二个警报,提示内容为(标题:“成功”,消息:“该操作成功”),只是一个“关闭”按钮。 第一个警报可以正常工作并且可以执行操作,但是当我在第一个警报之后立即添加第二个警报时,按按钮时第一个警报将不再显示。

代码:

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")))
            }

1 个答案:

答案 0 :(得分: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}

        
        
        
    }
}