主题
@State、@Binding 等属性包装器
SwiftUI 使用属性包装器管理视图的状态和数据流,简化状态管理。
@State
用于声明视图内部可变的状态变量,当状态变化时,视图自动刷新。
swift
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack {
Text("计数:\(count)")
Button("增加") {
count += 1
}
}
}
}
@Binding
用于在父子视图之间共享和绑定状态,子视图通过绑定修改父视图的状态。
swift
struct ParentView: View {
@State private var isOn = false
var body: some View {
ToggleView(isOn: $isOn)
}
}
struct ToggleView: View {
@Binding var isOn: Bool
var body: some View {
Toggle("开关", isOn: $isOn)
}
}
其他常用属性包装器
@ObservedObject
:观察外部引用类型对象的变化。@EnvironmentObject
:环境共享的数据对象。@StateObject
:视图创建和管理的可观察对象。
总结
属性包装器是 SwiftUI 响应式编程的核心,简化了状态管理和视图更新流程。