带绑定的条件视图不起作用

问题描述 投票:0回答:1

我正在尝试在主视图上实现两个条件视图。是否将每个视图都隐藏的条件作为观察对象存储在条件视图模型中。我没有任何错误,并且隐藏条件正在更新(您可以通过更改视图的颜色来看到它),但是显然没有传递给主视图。

(两个视图都使用相同的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()
        }
    }

}
}
view binding swiftui conditional-statements observable
1个回答
0
投票
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()
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.