alert
?SwiftUI 使得显示单个警报相对容易,但是,如果您尝试从单个视图中显示两个或多个警报,则事情将变得更加棘手-例如,您可能会发现一个警报有效而另一个警报无效。
要解决此问题,您需要确保在每个视图上附加不超过一个 alert()
修饰符。 听起来可能有限制,但请记住:您无需将警报附加到同一视图–您可以将它们附加在任何地方。 实际上,您可能会发现将它们直接附加到显示它们的内容(例如按钮)上最适合您。
例如,我们可以编写一些代码定义两个 @State
属性,每个属性控制显示的警报。 与其将两个 alert()
修饰符都附加到同一个 VStack
上,不如将它们分别附加到负责显示该警告的任何按钮上:
struct ContentView: View {
@State private var showingAlert1 = false
@State private var showingAlert2 = false
var body: some View {
VStack {
Button("Show 1") {
showingAlert1 = true
}
.alert(isPresented: $showingAlert1) {
Alert(title: Text("One"), message: nil, dismissButton: .cancel())
}
Button("Show 2") {
showingAlert2 = true
}
.alert(isPresented: $showingAlert2) {
Alert(title: Text("Two"), message: nil, dismissButton: .cancel())
}
}
}
}
如果您尝试将两个 alert()
修饰符都移至 VStack
,则会发现只有一个起作用,这就是上述方法如此有用的原因。