SwiftUI ObservedObject如何转换为Binding (教程含源码) 实战需求 基础知识 实战代码 加入我们一起学习SwiftUI

实战需求

SwiftUI ObservedObject如何转换为Binding


基础知识

ObservableObject

具有发布者的一种对象,该对象在更改对象之前发出。

protocol ObservableObject : AnyObject

总览
默认情况下,合成器将在其任何属性更改之前发出更改后的值的发布程序。


class Contact: ObservableObject {
    @Published var name: String
    @Published var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    func haveBirthday() -> Int {
        age += 1
        return age
    }
}

let john = Contact(name: "John Appleseed", age: 24)
cancellable = john.objectWillChange
    .sink { _ in
        print("\(john.age) will change")
}
print(john.haveBirthday())
// Prints "24 will change"
// Prints "25"

实战代码

struct ContentView: View {
    @StateObject var dataModel = DataModel()

    var body: some View {
        DataView(dataModel: dataModel)
    }
}

struct DataView: View {
    @ObservedObject var dataModel: DataModel

    var body: some View {
        Text(dataModel.data)
            .padding()
    }
}

加入我们一起学习SwiftUI

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章