【发布时间】:2021-07-07 11:01:53
【问题描述】:
出现错误 - selectedTab = tab.getTab()
致命错误:未找到 SelectedTab 类型的 ObservableObject。 SelectedTab 的 View.environmentObject(_:) 作为该视图的祖先可能会丢失。
class SelectedTab: ObservableObject {
@Published var tab:String = "Home"
func setTab(tabName: String) {
tab = tabName
}
func getTab() -> String {
return tab
}
}
struct TabBarContentView: View {
@EnvironmentObject var tab: SelectedTab
var body: some View {
Home().environmentObject(tab)
}
}
struct TabBarContentView_Previews: PreviewProvider {
static var previews: some View {
Group {
TabBarContentView()
.previewDevice(PreviewDevice(rawValue: "iPhone 12 Pro Max"))
.previewDisplayName("iPhone 12 Pro Max")
}
}
}
struct Home: View {
@EnvironmentObject var tab: SelectedTab
@State var selectedTab = "Home"
init() {
UITabBar.appearance().isHidden = true
selectedTab = tab.getTab()
}
var body: some View{
NavigationView() {
ZStack(alignment: .bottom, content: {
TabView(selection: $selectedTab){
HomeTab()
NewsTab()
ProfileTab()
MoreTab()
}
}
}
}
}
【问题讨论】:
-
正如错误所说,需要将对象注入到
TabBarContentView的祖先中的环境中 -
已经完成 - struct TabBarContentView: View { @EnvironmentObject var tab: SelectedTab var body: some View { Home().environmentObject(tab) } }
-
不,这是试图从环境中获取一个对象,但它不存在,所以你得到了错误。
标签: ios swiftui xcode12 observableobject environmentobject