Mirror Binding value with Published in SwiftUI

Viewed 54

How can I connect Binding value of View to Published value of ObservableObject?

The goal: all changes of objValue will be reflected on viewValue and vice versa.

Note: Do not propose onChange(obj.objValue) { viewValue = $0 } modifier. It will trigger extra drawing cycle of View (first for objValue and second for viewValue).

class MyObject: ObservableObject {
    @Published var objValue: Int = 0
}

struct MyView: View {
    @Binding var viewValue: Int
    @StateObject var obj = MyObject()
    
    var body: some View {
        Text("Placeholder")
            .onChange(viewValue) {
                //Do something
            }
    }
}
0 Answers
Related