多个相同类型的@EnvironmentObject

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

我只是想将两个环境对象传递给一个视图,它们是同一类的不同实例。我觉得我忽略了一些事情,因为这看起来很简单。

最明显的方法是按照通常的方式进行(如果它们是不同类的实例,则有效),如下所示:

俯视图:

exampleView()
    .environmentObject(vm1)
    .environmentObject(vm2)

子视图:

struct exampleView: View {
    
    @EnvironmentObject var vm1: ViewModel
    @EnvironmentObject var vm2: ViewModel

    var body: some View {
        ...
    }
}

但这不起作用,因为视图会将

vm1
vm2
设置为原始
vm1

我到处搜索,但除了使用单个类并更改该类的属性(例如从“property”到“property1”和“property2”)之外,找不到任何解决方案。这不仅是相当难看的代码,而且在我的情况下也是不可能的。

为什么?我正在从事的项目相当大,我无法访问某些代码。初始化两次的类拥有一个数组,该数组的填充方式不同,具体取决于其他因素。在视图中,某些部分被重用,因为数组具有相同类型的项目,但填充了不同的内容。

如果这对于 Swift UI 来说确实是错误的,请告诉我。我必须重做很多,但从表面上看,这似乎是一个相当简单的问题,所以我希望得到可以保留班级结构的答案。

ios swift swiftui
1个回答
0
投票

好吧,你不能创建一个 [ViewModel] 类型的 env obj,将两个虚拟机传递到一个对象中,然后访问它吗?

© www.soinside.com 2019 - 2024. All rights reserved.