在下面的简单示例中,为什么警报 2 没有出现?
struct ContentView: View {
@State private var showingOtherButton = false
@State private var showingAlert1 = false
@State private var showingAlert2 = false
var body: some View {
Group {
if showingOtherButton {
Button("Show Alert 2") {
showingAlert2 = true
}
.alert(isPresented: $showingAlert2) {
print("Alert 2 should be shown")
return Alert(title: Text("Alert 2"), dismissButton: .default(Text("Ok")))
}
} else {
Button("Show other Button") {
self.showingOtherButton = true
}
Button("Show Alert 1") {
showingAlert1 = true
}
}
}
.alert(isPresented: $showingAlert1) {
Alert(title: Text("Alert 1"), dismissButton: .default(Text("OK")))
}
}
}
将警报 1 修饰符直接放在“显示警报 1”按钮上就可以了,但我不明白为什么。
答案 0 :(得分:1)
您的第二个警报应该与第一个警报位于同一位置 - 附加到 Group
视图,而不是 Button
:
Group {
if showingOtherButton {
Button("Show Alert 2") {
showingAlert2 = true
}
} else {
Button("Show other Button") {
self.showingOtherButton = true
}
Button("Show Alert 1") {
showingAlert1 = true
}
}
}
.alert(isPresented: $showingAlert1) {
Alert(title: Text("Alert 1"), dismissButton: .default(Text("OK")))
}
.alert(isPresented: $showingAlert2) {
print("Alert 2 should be shown")
return Alert(title: Text("Alert 2"), dismissButton: .default(Text("Ok")))
}