SwiftUI—如何使用@ObservedObject监听实例对象

简介: SwiftUI—如何使用@ObservedObject监听实例对象

@ObservableObject标记和@State标记的功能相似,不同之处是:@ObservableObject是用来修饰对象的。


示例代码:


class UserModel: ObservableObject { 
//如果用@ObservableObject标记修饰一个对象,那么这个对象必须要遵循ObservableObject协议。所以在此定义一个类,并且该类遵循这个协议
    @Published var nickName: String = "" //@Published标记和@ObservableObject是配合使用的,用来修饰遵循可观察对象协议的类的属性,表示这个属性需要被SwiftUI监听
}
struct ContentView : View {
    @ObservedObject var model = UserModel() //添加一个实例属性用来进行数据的传递,并给它添加@ObservedObject标记,从而使实例的nickName属性可以与视图进行绑定
    @State var isPresented = false //标识是否弹出警告窗口
    let dismiss = Alert.Button.default(Text("OK")) {} //初始化一个警告窗口里的按钮,并设置按钮的标题文字
    var alert: Alert { //表示一个警告窗口
        Alert(title: Text("Your nickname"), //初始化一个警告窗口,并设置它的标题、信息和关闭按钮。其中信息内的文字和实例对象的NickName属性进行了绑定
             message: Text("\(self.model.nickName)"),
             dismissButton: dismiss)
    }
    var body: some View {
        VStack {
            TextField("Your nickname", text: $model.nickName)
            .padding()
            Button(action: {
                self.isPresented = true
            }) {
                Text("Show")
            }.alert(isPresented: $isPresented) { () -> Alert in
                alert
            }
        }
    }
}


2466108-c775df52190abef1.gif


目录
相关文章
SwiftUI—使用Text视图创建漂亮的富文本
SwiftUI—使用Text视图创建漂亮的富文本
1366 0
SwiftUI—使用Text视图创建漂亮的富文本
|
Web App开发 前端开发 Java
Apache Zeppelin系列教程第二篇——整体架构
Apache Zeppelin系列教程第二篇——整体架构
352 0
|
数据安全/隐私保护
【鸿蒙软件开发】文本输入(TextInput/TextArea)
【鸿蒙软件开发】文本输入(TextInput/TextArea)
1563 0
|
域名解析 .NET 开发框架
万网云解析设置二级域名解析到同IP不同端口
首先,进入云解析(注意,以下图片均做修改,仅做参考) 步骤阅读 2 先来使用端口的方式访问访问asp,ASP SUCCESS 正常。 3 继续,打开解析,进入如下页面,应该看到了一个叫做隐性URL,就是看这个。
9639 0
No module named ‘PyQt5.QtWebEngineWidgets‘
No module named ‘PyQt5.QtWebEngineWidgets‘
711 0
|
iOS开发 开发者
解决 Objective-C 中的 EXC_CRASH (SIGABRT) 错误
在Objective-C开发中,EXC_CRASH (SIGABRT) 是常见的运行时错误。面对此类问题,首先要解析Xcode提供的详细错误信息以定位问题所在。随后,仔细审查相关代码,特别是涉及空对象处理的部分,并考虑增加条件判断。利用断言如`NSAssert`可以帮助检测潜在错误,提前中断程序避免崩溃。此外,采用异常处理机制如`@try`/`@catch`可在异常发生时优雅地捕获并处理错误,避免程序终止。结合使用断点、Xcode调试器及打印调试信息等技术,开发者能够更有效地诊断并修复这类错误。
905 1
|
应用服务中间件 nginx
解决Ngnix默认Index.html中文乱码问题
解决Ngnix默认Index.html中文乱码问题
782 2
|
JavaScript IDE 程序员
你会了吗 HarmonyOS Next 项目级别的注释规范
你会了吗 HarmonyOS Next 项目级别的注释规范
296 1
你会了吗 HarmonyOS Next 项目级别的注释规范
|
数据采集 监控 数据安全/隐私保护
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
在Selenium Web数据采集时,日志管理至关重要。通过调整`–log-level`参数可优化日志详细度,如设置为`INFO`记录一般操作信息。结合代理IP、Cookie及user-agent配置,不仅能提高采集成功率,还能规避反爬机制。合理选择日志级别有助于调试与性能平衡,在复杂的数据采集任务中保持程序稳定与可控。
442 1
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
|
数据可视化
鸿蒙ArkUI实现开关switch组件
鸿蒙ArkUI实现开关switch组件
256 0