渐进式编程课
SwiftUI 目录
第 6 课2026.09.08

让同一个页面中的多个子视图观察并修改共享学习进度。

第 6 课:Observable状态共享

  • 日期:2026-09-08
  • 课程序号:第 6 课
  • 知识点:@Observable 与 @State

用途

让同一个页面中的多个子视图观察并修改共享学习进度。

核心概念

@Observable 让模型属性变化可被 SwiftUI 追踪;拥有模型的视图用 @State 保持它的生命周期。

最小代码或操作示例

swift
import Observation
import SwiftUI

@Observable final class Progress {
    var count = 0
}

struct ContentView: View {
    @State private var progress = Progress()
    var body: some View {
        Button("完成 \(progress.count) 次") { progress.count += 1 }
    }
}

3~5 分钟练习

增加一个 Text,显示同一个 progress.count。

参考答案

在按钮旁加入 Text("当前:\(progress.count)"),点击后两处会同步更新。

与上一课的联系

上一课用 Binding 把单个值传给子视图;本课用可观察模型组织一组共享状态。