SwiftUI 中的 ViewState 可以通過(guò) @State
關(guān)鍵字來(lái)表示。
@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
是一個(gè)用于控制是否顯示 sheet 的狀態(tài)屬性。當(dāng)點(diǎn)擊按鈕時(shí),它的值被設(shè)置為 true,從而顯示 sheet。sheet 的顯示狀態(tài)由 isPresented
參數(shù)控制,它接受一個(gè)綁定的狀態(tài)屬性作為值。
在 SheetView 中,presentationMode
是一個(gè)用于控制 sheet 是否被隱藏的環(huán)境值。當(dāng)點(diǎn)擊按鈕時(shí),調(diào)用 self.presentationMode.wrappedValue.dismiss()
可以將 sheet 隱藏。
通過(guò) @State
和 $
符號(hào),SwiftUI 實(shí)現(xiàn)了一種簡(jiǎn)潔而直觀的方式來(lái)處理和更新視圖的狀態(tài)。