SwiftUI 删除导航堆栈

时间:2021-05-29 02:26:27

标签: swiftui

第一次启动我的应用程序时,需要进行一些设置。完成此设置后,用户应该会来到 MainView。
现在我希望用户在到达 MainView 时不能立即跳回上一个设置步骤。
我能找到的所有解决方案都是简单地删除后退按钮。但这对我来说还不够,我目前正在使用 tvOS,他的遥控器上有一个返回按钮。如果他随后按下此按钮,则理想情况下他应该返回 tvOS 主屏幕。
是否有可能删除完整的导航堆栈或具有相同结果的类似内容?

1 个答案:

答案 0 :(得分:1)

您可以在父级别替换整个视图层次结构(如果给定条件为真,则在您的 NavigationView 之上:

var body : some View {
  if setup {
    //parent component of views for once setup is done 
    MainView()
  } else {
    //parent component of the setup views (including a NavigationView)
    SetupScreens()
  } 
}

因此,在最终设置屏幕上,将 setup 设置为 true(这可能应该存储在每个视图都可以访问的 ObservableObject 中[可能通过 .environmentObject ]) 并且 NavigationView 将被销毁,层次结构将被 MainView 替换。