SwiftUI 提供了两种显示警报的方式,具体取决于您是要在布尔值变为true还是设置可选值时显示警报。
创建基本 SwiftUI 警报的代码如下所示:
Alert(title: Text("Important message"), message: Text("Wear sunscreen"), dismissButton: .default(Text("Got it!")))
就像在 UIAlertController
中看到的那样,它定义了标题和消息,然后添加了具有默认样式和文本 知道了!
的关闭按钮。
为了显示警报,第一种方法是定义某种可绑定条件,该条件确定警报是否可见。 然后,将其附加到您的主视图,该主视图在条件为真时立即显示该警报。
例如,此代码创建一个 showingAlert
布尔值,该值跟踪是否应显示防晒霜消息,在点击按钮时将该 Boolean
设置为 true
,然后使用该布尔值创建并附加警报视图,以便在点击按钮时显示该警告视图 :
struct ContentView: View {
@State private var showingAlert = false
var body: some View {
Button("Show Alert") {
showingAlert = true
}
.alert(isPresented: $showingAlert) {
Alert(title: Text("Important message"), message: Text("Wear sunscreen"), dismissButton: .default(Text("知道了!")))
}
}
}
提示:按下这样的警报时,在点击关闭按钮时,showingAlert
会自动设置为 false
。
创建警报的第二种方法是绑定到符合 Identifiable
的某些可选状态,这将导致在对象的值更改时显示警报。
此方法有两个优点:
例如,根据选择的电视节目,这将显示一个具有两个不同值的警报:
struct TVShow: Identifiable {
var id: String { name }
let name: String
}
struct ContentView: View {
@State private var selectedShow: TVShow?
var body: some View {
VStack(spacing: 20) {
Text("What is your favorite TV show?")
.font(.headline)
Button("Select Ted Lasso") {
selectedShow = TVShow(name: "Ted Lasso")
}
Button("Select Bridgerton") {
selectedShow = TVShow(name: "Bridgerton")
}
}
.alert(item: $selectedShow) { show in
Alert(title: Text(show.name), message: Text("Great choice!"), dismissButton: .cancel())
}
}
}