【问题标题】:Conditionally show Navigation View有条件地显示导航视图
【发布时间】:2020-12-13 12:18:43
【问题描述】:

由于在视图层次结构中应该只使用一个 NavigationView,如何处理在应用启动时确定要呈现的初始视图的情况?

@main
struct heartbreaksApp: App {
    let token = UserDefaults.standard.value(forKey: "token")

    var body: some Scene {
        return WindowGroup {
            if token != nil {
                Campaigns()

            } else {
                Login()
            }
        }
    }
}

因此,如果令牌为 nil,我们将转到声明 NavigationView 的登录,当我们登录时,NavigationLink 会将我们带到 Campaigns 视图。但是,如果令牌不是 nil,我们会直接进入没有 Navigation View 的 Campaigns 视图,因此无法从那里导航到其他视图。如果我也确实在 Campaigns 中声明了 Navigation View,我最终会得到两个造成各种破坏的结果,例如 2 个后退按钮,一个指向 Login,一个指向 Campaigns。我显然做错了......Please see picture

【问题讨论】:

    标签: swiftui swiftui-navigationview


    【解决方案1】:

    从登录中删除NavigationView并将其放在顶层,例如

    NavigationView {           // << here !!
        if token != nil {
            Campaigns()
        } else {
            Login()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多