SwiftUI - 在没有嵌套的情况下导航回家?

SwiftUI - Navigating back to home without nesting?

在下面的代码中,如果我使用 links 在视图 A 和 B 之间来回切换,我最终会得到如图所示的嵌套视图。我发现避免嵌套的唯一方法是永远不要 link 到声明 NavigationView 的视图 - 正如下面的 ViewA 所示。我的问题...有没有办法在没有视图嵌套的情况下返回到 ViewA?

struct ViewA: View {
   var body: some View {
      NavigationView{
        NavigationLink(destination: ViewB()) {
           Text("ViewB")
        }
      }
      .navigationBarTitle("ViewA")
   }
}

struct ViewB: View {
   var body: some View {
       NavigationLink(destination: ViewA()) {
          Text("ViewA")
       }
      .navigationBarTitle("ViewB")
   }
}

您正在嵌套视图,因为每次单击 ViewA/ViewB 它都会创建一个新的视图对象。您可以添加

@Environment(\.presentationMode) var presentationMode 并打电话 presentationMode.wrappedValue.dismiss()

当按下视图按钮时,您将其关闭。

您不应该创建 NavigationLink(destination: ViewA()),因为它没有返回,它会创建 一个新的 ViewA。导航到 ViewB 后,将自动为您创建后退按钮。

struct ViewA: View {
   var body: some View {
      NavigationView{
        NavigationLink(destination: ViewB()) {
           Text("ViewB")
        }
      }
      .navigationBarTitle("ViewA")
   }
}

struct ViewB: View {
   var body: some View {
      Text("ViewB Pure Content")
         .navigationBarTitle("ViewB")
   }
}