【发布时间】:2021-12-07 18:34:21
【问题描述】:
我正在创建我的第一个应用程序,但在使用 @EnvironmentObject 和 @StateObject 时遇到了问题。当我运行模拟器时,它会打开我的 ContentView()。我试图让它打开 MainView(),它有一个 tabView。现在 tabView 没有显示我的 ContentView()。我假设我在错误的地方有 @EnvironmentObject 和 @StateObject 。在我的 ContentView 中,它显示了一个列表和 addButton。我基本上是想拥有一个由用户通过填写表格来更新的程序。
这里是主要方法
import SwiftUI
@main
struct Location_ScoutApp: App {
@StateObject var listViewModels: ListViewModel = ListViewModel()
var body: some Scene {
WindowGroup {
// MainView(){
ContentView()
.environmentObject(listViewModels)
//}
}
}
}
这是我的主视图。
import SwiftUI
struct MainView: View {
var body: some View {
TabView {
MapView()
.tabItem {
Label("Map", systemImage: "map.circle")
}
// this is where i am having trouble.
ContentView()
.tabItem {
Label("Explore", systemImage: "magnifyingglass")
}
ProfileView()
.tabItem {
Label("Profile", systemImage: "person.crop.circle")
}
}
}
}
struct MainView_Previews: PreviewProvider {
static var previews: some View {
MainView()
}
}
这是我的内容视图:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var listViewModel: ListViewModel
var body: some View {
List {
ForEach(listViewModel.items) { item in
// this is where i am getting my new error.
ListRowView(item: item)
.onTapGesture {
listViewModel.updateItem(item: item)
}
}
}
.navigationTitle("Explore")
.navigationBarItems(
leading: EditButton(),
trailing:
NavigationLink("Add", destination: addALandmarkForm()))
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
NavigationView {
ContentView()
}
.environmentObject(ListViewModel())
}
}
【问题讨论】:
-
在
Location_ScoutApp中,您已将MainView()注释掉。你应该使用MainView()而不是ContentView() -
当我编译它时,但当我在模拟器中运行它时,我的 ContentView() 中出现错误。错误:“线程 1:致命错误:未找到 ListViewModel 类型的 ObservableObject。ListViewModel 的 View.environmentObject(_:) 作为此视图的祖先可能会丢失。” @jnpdx
-
当我尝试你的代码时不会发生这种情况(你遗漏的部分被删除了)。你能加入minimal reproducible example吗?
-
我添加了更多来自 ListViewModel 的代码,基本上当我运行它时,当我单击它时 ContentView() 选项卡会崩溃。这有帮助吗?
-
不,它没有,因为您的示例仍然无法编译。请尝试包含一个可以复制并粘贴到 Xcode 中的minimal reproducible example。
标签: swiftui swiftui-environment