教程 swift tutorial

@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 响应式编程的核心,简化了状态管理和视图更新流程。