swiftUI
でAlert
タイプを発見しました。しかし、それをpresentation
メソッドでどのように表示するのか疑問に思います。
Alert
の初期化はとても簡単です。しかし、バインディングの使い方は?
struct ContentView : View {
var body: some View {
Button(action: {
// Don't know how to use the `binding` below
presentation(binding, alert: {
Alert(title: Text("Hello"))
})
}, label: {
Text("asdf")
})
}
}
バインディングのタイプはBinding<Bool>
struct ContentView: View {
@State var aAlert = false
var body: some View {
Text("Alert").tapAction {
self.aAlert = true
}.presentation($aAlert, alert:{ Alert(title: Text("Alert"))})
}
}
@tspの回答に加えて、2つのボタンでアラートを表示し、ボタンのタップアクションを処理するには、次のようにします。
@State var showAlert = false
var body: some View {
Button(action: {
self.showAlert = true
}) {
Text("Show Alert")
}
.presentation($showAlert) {
Alert(title: Text("Title"), message: Text("Message..."),
primaryButton: .default (Text("OK")) {
print("OK button tapped")
},
secondaryButton: .cancel()
)
}
}
結果:
SwiftUI
最初に基本的なアラートを作成します。
Alert(title: Text("Alert title"), message: Text("Alert message"), dismissButton: .default(Text("Got it!")))
次に、アラートが表示されるかどうかを示すバインド可能な条件を定義します。その状態を切り替えて、アラートを表示/非表示にします。
struct ContentView: View {
@State private var showingAlert = false
var body: some View {
Button(action: {
self.showingAlert = true
}) {
Text("Show Alert")
}
.alert(isPresented: $showingAlert) {
Alert(title: Text("Important message"), message: Text("Wear sunscreen"), dismissButton: .default(Text("Got it!")))
}
}
}