【问题标题】:How does SwiftUI know what environmentObject to assign to which variableSwiftUI 如何知道将哪个 environmentObject 分配给哪个变量
【发布时间】:2020-06-29 18:49:05
【问题描述】:

假设我有一个ViewEnvironment Object,如下所示:

struct MyView: View {
    @EnvironmentObject
    var viewModel: RegisterViewModel
}

在祖先的某个地方,我会像这样提供这个对象:

NavigationView {
    LoginView()
}
.environmentObject(RegisterViewModel())

将此值实际分配给var viewModel 的机制是什么。我的代码中没有任何地方需要指定变量的名称,但它已正确分配。如果我的同类型环境对象很少,会发生什么?

【问题讨论】:

    标签: ios swift mvvm swiftui


    【解决方案1】:

    EnvironmentObjects 由 type 标识。

    SwiftUI 只是查找特定类型的环境变量(这里是 RegisterViewModel)并使用它找到的第一个。

    这段代码RegisterViewModel放到环境中:

    .environmentObject(RegisterViewModel())
    

    然后,在构建视图时,SwiftUI 会在环境中查找 RegisterViewModel 类型:

    @EnvironmentObject var viewModel: RegisterViewModel
    

    更多细节:

    【讨论】:

    猜你喜欢
    • 2018-02-05
    • 2020-11-15
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多