当在主视图中调用一个视图环境对象时,ok构建成功,但当我调用第二个视图环境对象时,它会抛出一个错误。
struct mainView: View{
@EnvironmentObject var userInterestVM: User_Interests_ViewModel
var body: some View {
FirstEnvironmentObjectView()
FirstEnvironmentObjectView() //<--(error: Extra Argument in call)
// if i call first environment with argument like that
FirstEnvironment(UserInterestsVM: <what I put here>)
// what should I put in the argument)
}
}
struct FirstEnvironmentObjectView: View {
@EnvironmentObject var UserInterestsVM: User_Interests_ViewModel
var body: some View {
Text("check by default values of model.").onTapGesture {
print("fitness (UserInterestsVM.fitness)")
}
}
struct FirstEnvironmentObjectView_Previews: PreviewProvider {
static var previews: some View {
testing()
.environmentObject(User_Interests_ViewModel())
}
}
您不能将几个视图放入View
的body
中。这些视图将如何显示?
您需要将它们包装在一个堆栈中,根据您的需要,可以是VStack
,HStack
或ZStack
。
如果你想让它们垂直堆叠,例如,使用VStack
。
struct MainView: View {
@EnvironmentObject var userInterestVM: User_Interests_ViewModel
var body: some View {
VStack {
FirstEnvironmentObjectView()
FirstEnvironmentObjectView()
}
}
}
至于环境对象,您不需要从MainView
手动将它们注入FirstEnvironmentObjectView
,因为EnvironmentObject
被注入到视图层次结构下游(因此到父视图的所有子视图),因此通过将User_Interests_ViewModel
作为EnvironmentObject
注入MainView
,它被自动注入到MainView
内部创建的所有FirstEnvironmentObjectView
中。