【发布时间】:2020-09-15 20:27:34
【问题描述】:
我正在尝试在视图中将属性绑定在一起,但找不到更好的专门针对它的东西。这就是我正在做的:
struct ContentView: View {
@ObservedObject var model: MyModel
@State var selectedID: Int
var body: some View {
Picker("Choose", selection: $selectedID) {
Text("Abc").tag(0)
Text("Def").tag(1)
Text("Ghi").tag(2)
}
.onChange(of: model.item?.selectedID) {
selectedID = $0
}
}
}
有没有更好的方法将属性绑定在一起?
【问题讨论】:
-
您可以通过将其设置为
Published属性来直接使用viewModel 中的selectedID。因此,您可以在选择器中使用 viewModel.selectedID。当它更新时,它会更新你的模型对象(应该是 ObservableObject),这将导致触发 body 属性的重绘。 -
你可以这样做......但这违背了单一事实来源的原则
-
我试图保持单向流,而不是让视图也更新模型