【发布时间】:2019-11-26 11:30:07
【问题描述】:
问题:
传递视图模型并从子级修改它,不会刷新父级。
我想要什么:
每当我从子视图修改视图模型时,父视图也会刷新。
问题描述:
我正在寻找一种将ViewModel ObservedObject 传递给某些子视图的方法。
这是我的结构:
struct Parent: View {
@ObservedObject viewModel: ViewModel
var body: some View {
NavigationView {
Form {
ScrollView(showsIndicators: false) {
Section {
ChildViewOne(model: viewModel)
}
Section {
ChildViewTwo(model: viewModel)
}
Section {
ChildViewThree(model: viewModel)
}
}
}
}
}
}
struct AnyChild: View {
@ObservedObject viewModel: ViewModel
var body: some View {
// some stuff
}
}
这样,每当我从子视图修改视图模型时,子视图都会正确重建,但父视图不会,并且滚动视图不会正确调整大小。
我想将 viewModel 像 Binding 对象一样传递给子级,因此父级也会刷新。
但我不知道该怎么做。有什么帮助吗?
解决方案:
当我删除一切正常时,Form 出现了一个特定问题。
但 @Alladinian 所写的正确解决方案仍然是使用@EnvironmentObject
【问题讨论】: