【问题标题】:How can I replace the root view in SwiftUI using the NavigationStack?如何使用 NavigationStack 替换 SwiftUI 中的根视图?
【发布时间】:2022-08-23 22:57:37
【问题描述】:

我目前正在使用 SwiftUI 中的新 NavigationStack 组件,我想重新创建一个应用程序记住用户的场景,当用户注销应用程序时,它会返回到未推送到堆栈中的视图。

我注意到 NavigationStack 中的根视图不能以编程方式更改,因为当您在视图(当前可见的视图)中添加 NavigationStack 时,保存堆栈的数组总是开始为空。有没有办法交换根视图?

  • 查看SceneStorage,我还没有尝试过,但是视频中提到的path应该可以存储在那里。记住用户需要做更多的工作,并且与 SwiftUI 没有直接关系。用您提供的信息无法帮助您解决该问题。
  • 你的问题和描述完全不匹配
  • 我刚刚编辑了这个问题。对于那个很抱歉

标签: swift swiftui


【解决方案1】:

我有类似的情况,我通过使用this package 解决了它。您可以使用屏幕 ID 将用户转发到特定屏幕。

【讨论】:

  • SO中不允许仅链接答案。如果链接中有相关代码,请将其发布为答案。链接会随着时间而中断。当您有足够的声誉时,您可以将链接发布为 cmets。
  • 您的答案应该作为评论发布,因为它不包含任何有用的演示。
【解决方案2】:

在做了一些研究之后,我意识到你不能替换根视图。根据苹果的文档:

因此,如果您想更改根目录,则需要执行以下操作:

struct ContentView: View {
    
    @State var isLogged = false 
    // or you could use an observableObject to handle this state
    
    var body: some View {
        NavigationStack {
            if isLogged {
                LoggedView()
            } else {
                LoginView()
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 2022-09-29
    • 2020-12-02
    • 2023-02-24
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2019-12-28
    • 2022-12-15
    相关资源
    最近更新 更多