SwiftUI 中的 ViewState 可以通過 @State
關鍵字來表示。
@State private var isShowingSheet = false
struct ContentView: View {
@State private var isShowingSheet = false
var body: some View {
VStack {
Button("Show Sheet") {
self.isShowingSheet = true
}
.sheet(isPresented: $isShowingSheet) {
SheetView()
}
}
}
}
struct SheetView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Sheet View")
Button("Dismiss") {
self.presentationMode.wrappedValue.dismiss()
}
}
}
}
在上述示例中,isShowingSheet
是一個用于控制是否顯示 sheet 的狀態屬性。當點擊按鈕時,它的值被設置為 true,從而顯示 sheet。sheet 的顯示狀態由 isPresented
參數控制,它接受一個綁定的狀態屬性作為值。
在 SheetView 中,presentationMode
是一個用于控制 sheet 是否被隱藏的環境值。當點擊按鈕時,調用 self.presentationMode.wrappedValue.dismiss()
可以將 sheet 隱藏。
通過 @State
和 $
符號,SwiftUI 實現了一種簡潔而直觀的方式來處理和更新視圖的狀態。