SwiftUI 中的 toggle
允许用户在 true 和 false 的状态之间进行切换,就像 UIKit 中的 UISwitch
一样。
例如:
我们可以创建一个 toggle ,然后根据是否启用 toggle 来决定显示或者不显示消息。但是我们不希望手动跟踪 toggle 的状态 – 我们希望 SwiftUI 为我们做这件事。
与以往不同,在这里,我们应该定义一个 @State Boolean
属性,用于存储 toggle 的当前值。然后我们可以根据需要使用它来显示或隐藏其它视图。
例如:
struct ContentView: View {
@State private var showGreeting: Bool = true
var body: some View {
VStack {
Toggle(isOn: $showGreeting) {
Text("Show welcome message")
}.padding()
if showGreeting {
Text("Hello world!")
}
}
}
}
效果预览:
这段代码,只有当 showGreeting
为 true 时才会返回文本视图,这意味着当 showGreeting
为 false 时,VStack
的大小会减小 - 它的堆栈中没有第二个视图。
注意: 使用
@State
时,Apple建议我们使用private
访问控制修饰符标记属性,以明确表明此状态属于本地视图,而不在其他地方使用。