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


目录
相关文章
|
3月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
21 0
|
5月前
|
JavaScript 前端开发 Java
v-if和v-show的区别?使用场景?v-if状态改变调用钩子函数的示例
这篇文章详细阐述了Vue中`v-if`和`v-show`指令的共同点、区别、使用场景以及它们在组件和普通元素上附属时的不同表现,并通过示例展示了状态改变时对钩子函数调用的影响。
v-if和v-show的区别?使用场景?v-if状态改变调用钩子函数的示例
|
8月前
|
C++
C++高级开发之可调用对象、function、bind(2)
std::bind 绑定器   要使用这个函数模板,在 cpp文件前面要包含如下头文件#include<funcitonal>   std::bind能够将对象以及相关的参数绑定到一起,绑定完成后可以直接调用,也可以用
69 0
|
7月前
|
XML JSON 前端开发
Qt委托代理机制之《Model/View/Delegate使用方法》
Qt委托代理机制之《Model/View/Delegate使用方法》
562 1
|
8月前
uni-app 76聊天类封装(十一)-更新会话列表(二)
uni-app 76聊天类封装(十一)-更新会话列表(二)
50 1
|
8月前
|
JavaScript 前端开发
如何用class绑定事件监听
如何用class绑定事件监听
166 1
|
8月前
|
C++
C++高级开发之可调用对象、function、bind(1)
可调用对象   以前函数调用总是离不开一堆圆括号,没错“()”就是函数调用的一个明显标记,这个 “()”有一个称呼叫函数调用运算符。
85 0
|
XML 监控 Java
Listener 监听器介绍以及代码演示
Listener 监听器介绍以及代码演示
135 0
Listener概述、监听对象的创建和销毁、监听域对象属性变化、监听会话相关的感知型监听器及监听器实现
Listener概述、监听对象的创建和销毁、监听域对象属性变化、监听会话相关的感知型监听器及监听器实现
119 0
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
1232 0
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便