我正在尝试在主视图上实现两个条件视图。是否将每个视图都隐藏的条件作为观察对象存储在条件视图模型中。我没有任何错误,并且隐藏条件正在更新(您可以通过更改视图的颜色来看到它),但是显然没有传递给主视图。
(两个视图都使用相同的ViewModel)
class ProjectsViewModel: ObservableObject {
@Published var showExtendedProjectsView: Bool = false
}
(两者的示例视图相同)
struct ProjectsView: View {
@ObservedObject var vm = ProjectsViewModel()
var body: some View {
Button(action: {
self.vm.showExtendedProjectsView.toggle()
}, label: {
ZStack {
Rectangle()
.foregroundColor(self.vm.showExtendedProjectsView ? Color.green : Color.red)
Text("Press")
}
})
}
}
此部分不起作用:
struct Test2: View {
let view1 = ProjectsView()
let view2 = ProjectsView()
var body: some View {
VStack {
if !view2.vm.showExtendedProjectsView {
view1
} else {
EmptyView()
}
if !view1.vm.showExtendedProjectsView {
view2
} else {
EmptyView()
}
}
}
}
struct Test2: View {
let view1 = ProjectsView()
let view2 = ProjectsView()
@ObservedObject var vm1: ProjectsViewModel
@ObservedObject var vm2: ProjectsViewModel
init() {
vm1 = view1.vm
vm2 = view2.vm
}
var body: some View {
VStack {
if !vm2.showExtendedProjectsView {
view1
} else {
EmptyView()
}
if !vm1.showExtendedProjectsView {
view2
} else {
EmptyView()
}
}
}
}