美文网首页SwiftUI学习
SwiftUI—如何使用@ObservedObject监听实例对

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

作者: anny_4243 | 来源:发表于2020-07-16 17:37 被阅读0次

原文链接:https://github.com/fzhlee/SwiftUI-Guide#-%E7%AC%AC4%E8%8A%82objectbinding-

@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
            }
        }
    }
}

相关文章

网友评论

    本文标题:SwiftUI—如何使用@ObservedObject监听实例对

    本文链接:https://www.haomeiwen.com/subject/rxqmhktx.html