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


目录
相关文章
vue-cli 如何让Eslint 报错在浏览器控制台输出
vue-cli 如何让Eslint 报错在浏览器控制台输出
249 0
SwiftUI—使用Text视图创建漂亮的富文本
SwiftUI—使用Text视图创建漂亮的富文本
1334 0
SwiftUI—使用Text视图创建漂亮的富文本
|
Web App开发 前端开发 Java
Apache Zeppelin系列教程第二篇——整体架构
Apache Zeppelin系列教程第二篇——整体架构
314 0
SwiftUI—如何设置导航栏里的标题样式
SwiftUI—如何设置导航栏里的标题样式
993 0
SwiftUI—如何设置导航栏里的标题样式
|
域名解析 .NET 开发框架
万网云解析设置二级域名解析到同IP不同端口
首先,进入云解析(注意,以下图片均做修改,仅做参考) 步骤阅读 2 先来使用端口的方式访问访问asp,ASP SUCCESS 正常。 3 继续,打开解析,进入如下页面,应该看到了一个叫做隐性URL,就是看这个。
9277 0
|
iOS开发 开发者
解决 Objective-C 中的 EXC_CRASH (SIGABRT) 错误
在Objective-C开发中,EXC_CRASH (SIGABRT) 是常见的运行时错误。面对此类问题,首先要解析Xcode提供的详细错误信息以定位问题所在。随后,仔细审查相关代码,特别是涉及空对象处理的部分,并考虑增加条件判断。利用断言如`NSAssert`可以帮助检测潜在错误,提前中断程序避免崩溃。此外,采用异常处理机制如`@try`/`@catch`可在异常发生时优雅地捕获并处理错误,避免程序终止。结合使用断点、Xcode调试器及打印调试信息等技术,开发者能够更有效地诊断并修复这类错误。
803 1
|
数据采集 监控 数据安全/隐私保护
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
在Selenium Web数据采集时,日志管理至关重要。通过调整`–log-level`参数可优化日志详细度,如设置为`INFO`记录一般操作信息。结合代理IP、Cookie及user-agent配置,不仅能提高采集成功率,还能规避反爬机制。合理选择日志级别有助于调试与性能平衡,在复杂的数据采集任务中保持程序稳定与可控。
375 1
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
|
JavaScript 程序员 Swift
The compiler is unable to type-check this expression in reasonable time; try breaking up the express
The compiler is unable to type-check this expression in reasonable time; try breaking up the express
196 0
|
Java UED 开发者
当错误遇上Struts 2:一场优雅的异常处理盛宴,如何让错误信息成为用户体验的救星?
【8月更文挑战第31天】在Web应用开发中,异常处理对确保用户体验和系统稳定性至关重要。Struts 2 提供了完善的异常处理机制,包括 `exception` 拦截器、`ActionSupport` 类以及 OGNL 表达式,帮助开发者优雅地捕获和展示错误信息。本文详细介绍了 Struts 2 的异常处理策略,涵盖拦截器配置、错误信息展示及自定义全局异常处理器的实现方法,使应用程序更加健壮和用户友好。
150 0
|
iOS开发
如何识别手机是否有灵动岛(dynamic island)
如何识别手机是否有灵动岛(dynamic island)
608 0