在SwiftUI中,观察和响应状态的改变通常使用@State
或@Binding
属性实现。
使用@State
属性时,我们可以将它声明在视图结构体中,当该状态值发生改变时,视图会自动重绘。例如:
struct ContentView: View {
@State var isOn = false
var body: some View {
VStack {
Text("Toggle Switch")
Toggle(isOn: $isOn) {
Text("Toggle")
}
}
}
}
当用户打开或关闭开关时,isOn
状态的值会相应地进行更新,并且该视图将自动刷新。
使用@Binding
属性时,我们可以将其作为参数传递给其他视图,从而实现状态的共享和响应。例如:
struct DetailView: View {
@Binding var isOn: Bool
var body: some View {
VStack {
Text("Detail View")
Toggle(isOn: $isOn) {
Text("Toggle")
}
}
}
}
struct ContentView: View {
@State var isOn = false
var body: some View {
VStack {
Text("Toggle Switch")
Toggle(isOn: $isOn) {
Text("Toggle")
}
DetailView(isOn: $isOn)
}
}
}
在ContentView
视图中,将isOn
值绑定到DetailView
视图中的isOn
参数上,从而使其能够获取和响应原值的改变。