swift常见的属性修饰器

@Environment

简介

使用@EnvironmentObject可以监听到自定义的model;
但是如果是系统的一些内置的类呢,则可以使用@Environment监听;

示例

1
@Environment(\.editMode) var editMode

@Binding

简介

双向绑定,用于父子视图的双向传递。修改子视图的Binding值,会触发父视图的State改变重新渲染body。修改父视图的State的值同样也会重新通过Binding传递给子视图,触发重新渲染body。

示例

1
@Binding var value: Int

@State

简介

通过使用 @State 修饰器我们可以关联出 View 的状态. SwiftUI 将会把使用过 @State 修饰器的属性存储到一个特殊的内存区域,并且这个区域和 View struct 是隔离的. 当 @State 装饰过的属性发生了变化,SwiftUI 会根据新的属性值重新创建视图

示例

1
@State var value: Bool = false

@Published + @ObservedObject

简介

@Published是SwiftUI最有用的包装之一,允许我们创建出能够被自动观察的对象属性,SwiftUI会自动监视这个属性,一旦发生了改变,会自动修改与该属性绑定的界面。

比如我们定义的数据结构Model,前提是 @Published 要在 ObservableObject 下使用
然后用 @ObservedObject 来引用这个对象,当然@State 不会报错,但是无法更新

示例

1
2
3
4
5
6
7
class ModelData: ObservableObject{
@Published var name:String = ""
}

struct ContentView: View{
@ObservedObject var model:ModelData = ModelData()
}

swift常见的属性修饰器
https://wttch96.github.io/post/swift/swift常见的属性修饰器.html
作者
Wttch
发布于
2022年4月7日
许可协议