【发布时间】:2020-08-14 03:41:09
【问题描述】:
我想让一个选择器使用 SwiftUI,当我更改 ChildView 中的值时,它不会改变并调用 ChildView init。
class ViewModel: ObservableObject {
@Published var value: Int
init(v: Int) {
self.value = v
}
}
struct ChildView: View {
@Binding var value: Int
@ObservedObject var vm = ViewModel(v: 0)
init(value: Binding<Int>) {
self._value = value
print("ChildView init")
}
var body: some View {
VStack {
Text("param value: \(value)")
Text("@ObservedObject bar: \(vm.value)")
Button("(child) bar.value++") {
self.vm.value += 1
}
}
.onReceive(vm.$value) { value = $0 }
}
}
struct ContentView: View {
@State var value = 0
var body: some View {
VStack {
Text("(parent) \(self.value)")
ChildView(value: $value)
}
}
}
但是当我在 ContentView 中删除 Text("(parent) \(self.value)") 时,它似乎是正常的。
【问题讨论】:
标签: swift swiftui combine publisher