0

我在选项卡视图(它是列表中的第二个选项卡)中有一个视图,它显示了三个条件视图之一,这些条件视图依赖于该视图的 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")
                }
        }
    }
}
4

0 回答 0