SwiftUI:alert()とsheet()はオプション値と一緒に使用されます.
1886 ワード
SwiftUIには2つのアラームとフォームを作成する方法があります.これまではブール値に結びつけられていました.このブール値はtrueになるとAlertまたはSheetを表示します.
第二の方法は、常に使用されていないが、必要なときには、条件としてオプションの
この点を説明するために、
これは簡単な機能のようですが、他の機能よりも簡単で安全です.古い
Alert弾道場SwiftUIを参照してください.アクションSheet弾道場Swift UI:Sheetビュー
Using alert()and sheet()with optionsから訳されます.
第二の方法は、常に使用されていないが、必要なときには、条件としてオプションの
Identifiable
オブジェクトを使用してもよく、オブジェクトが値を持っているときには、AlertまたはSheetを表示します.そのクローズドは条件のための非オプション値を提供しますので、安全に使えます.この点を説明するために、
Identifiable
プロトコルに適合する簡単なUser
構造体を作成することができます.struct User: Identifiable {
var id = "Taylor Swift"
}
その後、ContentView
において、どのユーザが選択されたかを追跡する属性を作成してもよく、デフォルトではnil
に設定されています.@State private var selectedUser: User? = nil
次に、ContentView
のbody
を変更して、テキストビューをクリックするときにselectedUser
を値に設定し、selectedUser
に値を提供するときにalert(item:)
を使ってアラームを表示します.Text("Hello, World!")
.onTapGesture {
self.selectedUser = User()
}
.alert(item: $selectedUser) { user in
Alert(title: Text(user.id))
}
このシンプルコードを使うと、「ハロー、World!」をクリックするたびに、「Taylor Swift」というアラームが発生します.アラーム解除後、SwiftUIはselectedUser
をnil
に設定します.これは簡単な機能のようですが、他の機能よりも簡単で安全です.古い
.alert(isPresente:)
修飾子を使って上記のコードを書き換えると、このように見えます.struct ContentView: View {
@State private var selectedUser: User? = nil
@State private var isShowingAlert = false
var body: some View {
Text("Hello, World!")
.onTapGesture {
self.selectedUser = User()
self.isShowingAlert = true
}
.alert(isPresented: $isShowingAlert) {
Alert(title: Text(selectedUser!.id))
}
}
}
それはもう一つの属性で、onTapGesture()
にもう一つの値を設定し、alert()
の修飾子に強制的に展開させます.これらのことを避けることができれば、よろしくお願いします.Alert弾道場SwiftUIを参照してください.アクションSheet弾道場Swift UI:Sheetビュー
Using alert()and sheet()with optionsから訳されます.