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 实现了一种简洁而直观的方式来处理和更新视图的状态。