Menu
CoddyTech

@State 属性

本课属于 Coddy Swift 学习旅程的“SwiftUI 入门”单元。第 20 课,共 50 课。

视图的 body 会根据它的数据重新计算。若要使用会变化的数据,请用 @State 标记属性。状态属性变化时,SwiftUI 会再次运行 body 并更新屏幕:

struct ContentView: View {
    @State private var count = 0

    var body: some View {
        VStack {
            Text("Count: \(count)")
            Button("Add one") {
                count += 1
            }
        }
    }
}

每次点击都会运行 count += 1,文本会显示新的数字。你不需要自己更新文本:文本是根据 count 描述的,所以会随着值变化。

视图中的普通 var 无法在视图主体中更改,因为视图是结构体。@State 会将值存储在结构体之外,这样每次重绘时值都会保留。将状态标记为 private:它属于此视图。

challenge icon

挑战

简单

完成点击计数器。按钮的操作目前是空的:让每次点击都给 taps 加上 1,这样点击一次后文本会显示 Taps: 1,点击两次后会显示 Taps: 2。

亲手试试

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

SwiftUI 入门中的所有课

自己练习: SwiftUI 在线编辑器