我在选项卡视图(它是列表中的第二个选项卡)中有一个视图,它显示了三个条件视图之一,这些条件视图依赖于该视图的 ViewModel 中的几个变量。
第一个视图是用户选择ChooseSeasonLength()
(LoadingScreen()
SeasonPage()
struct SeasonView: View {
@EnvironmentObject var currentUser: CurrentUserProfile
@ObservedObject var seasonGoalsVM: SeasonGoalsViewModel
var body: some View {
if seasonGoalsVM.featuredSeason != nil {
SeasonPage()
.environmentObject(seasonGoalsVM)
} else if seasonGoalsVM.seasonLength == nil {
ChooseSeasonLength()
.environmentObject(seasonGoalsVM)
} else {
LoadingScreen()
.environmentObject(seasonGoalsVM)
}
}
}
但我遇到的问题是这SeasonView()
是 TabView 列表中的第二项,每当我单击用户选择时,它不会显示加载屏幕,而是将我弹回第一个选项卡 - HomePage()
.
当我在选项卡列表中单击 SeasonView 时,它会将我带到正确的屏幕,但我不知道为什么 SeasonView 上的初始用户选择将我带回主页,而不是带我通过正确的视图流季节视图。
我读过 TabView 可能有一些问题,但没有看到任何关于此的内容。有谁知道这是否可能是 TabView 的问题?
这是我的初始视图,其中指定了选项卡:
struct HomeView: View {
@StateObject var actionListVM = ActionListViewModel()
@StateObject var seasonGoalsVM = SeasonGoalsViewModel()
var body: some View {
TabView {
HomePage(actionListVM: actionListVM)
.tabItem {
Label("Home", systemImage: "house.fill")
}
SeasonView(seasonGoalsVM: seasonGoalsVM)
.tabItem {
Label("Season", systemImage: "scribble.variable")
}
GroupsPage()
.tabItem {
Label("Groups", systemImage: "person.2.fill")
}
FriendsPage()
.tabItem {
Label("Friends", systemImage: "person.crop.circle.badge.plus")
}
}
}
}