微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TabView 更新后返回首页

如何解决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 举报,一经查实,本站将立刻删除。