可以说我有一个View
和Environment Object
像这样:
struct MyView: View {
@EnvironmentObject
var viewModel: RegisterViewModel
}
在祖先的某个地方,我会提供这样的对象:NavigationView {
LoginView()
}
.environmentObject(RegisterViewModel())
将此值实际分配给var viewModel
的机制是什么?在我的代码中无处需要指定变量的名称,但它已正确分配。如果我没有几个相同类型的环境对象,将会怎样? 最佳答案
EnvironmentObject由类型标识。
SwiftUI只是查找特定类型的环境变量(此处为RegisterViewModel
),并使用找到的第一个变量。
此代码将RegisterViewModel
放入环境:
.environmentObject(RegisterViewModel())
然后,在构建 View 时,SwiftUI在环境中查找RegisterViewModel
类型:@EnvironmentObject var viewModel: RegisterViewModel
更多细节:关于ios - SwiftUI如何知道将哪个environmentObject分配给哪个变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62644817/