SwiftUI StateObject 全能型属性包装器 基础使用(教程含代码)

StateObject

实例化可观察对象的属性包装器类型。

@frozen @propertyWrapper struct StateObject<ObjectType> where ObjectType : ObservableObject

使用教程

通过将@StateObject属性应用于属性声明并提供符合ObservableObject协议的初始值,从而在View,App或Scene中创建状态对象:

@StateObject var model = DataModel()

SwiftUI仅为声明该对象的结构的每个实例创建一次该对象的新实例。当可观察对象的已发布属性更改时,SwiftUI将更新依赖于这些属性的任何视图的部分

Text(model.title) // Updates the view any time `title` changes.

您可以将状态对象传递到具有ObservedObject属性的属性中。您也可以通过应用environmentObject(_ :)修饰符将对象添加到视图层次结构的环境中:

ContentView()
    .environmentObject(model)

如果创建如上面的代码所示的环境对象,则可以使用EnvironmentObject属性在ContentView或其任何后代中读取该对象:

@EnvironmentObject var model: DataModel

使用$运算符获取对状态对象的属性之一的绑定。当您要创建与对象属性之一的双向连接时,请使用绑定。例如,您可以让Toggle控制存储在模型中的名为isEnabled的布尔值:

Toggle("Enabled", isOn: $model.isEnabled)

推荐

基础文章推荐

经典教程推荐

技术源码推荐

推荐文章

CoreData篇

Combine篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。