SwiftUi调用中的额外参数当调用主视图中@EnvironmentObject的两个视图时



当在主视图中调用一个视图环境对象时,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())
}
}

您不能将几个视图放入Viewbody中。这些视图将如何显示?

您需要将它们包装在一个堆栈中,根据您的需要,可以是VStack,HStackZStack

如果你想让它们垂直堆叠,例如,使用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中。

最新更新