TabView 更新后返回首页

问题描述

我在选项卡视图(它是列表中的第二个选项卡)中有一个视图,该视图显示依赖于该视图的 viewmodel 中的几个变量的三个条件视图之一。

一个视图是用户选择 (ChooseSeasonLength()),当它被选中时,它应该显示一个加载屏幕 (LoadingScreen()),直到设置了一个 featuresSeason,此时它应该显示主视图 (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 上的初始用户选择会将我带回主页,而不是带我完成正确的流程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")
                }
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)