SwiftUI NavigationView 不记得状态

Dan*_*ran 7 swift swiftui

我在 SwiftUI 中使用 NavigationView 时遇到了以下问题。

我在 TabView 中嵌入了一个 NavigationView,如下所示:

var body: some View {
   TabView {
      NavigationView {
         View1()
      }
         .tabItem { Text("View 1") }
         .tag(1)
      View2()
         .tabItem {Text("View 2") }
         .tag(2)
   }
}
Run Code Online (Sandbox Code Playgroud)

在第一个选项卡上,我将多个视图推送到NavigationView,但是当切换到第二个选项卡然后切换回第一个选项卡时,再次NavigationView变为View1(),所有推送的视图都被删除。证明如下:

一步步

预期行为是切换到第一个选项卡时,显示付款视图而不是主页。

有没有办法把 NavigationView 的状态放到一个外部@EnvironmentObject,例如,这样NavigationView切换后的状态保持不变。

小智 -2

是的,有一种非常简单的方法可以使用带有 NavigationLink 的状态。有一个可选属性 isActive 您可以提供一个 @Binding 变量,该变量也可以来自使用可观察对象内的 @Published 属性的外部环境对象。如果您想了解更多有关 SwiftUI NavigationView 的信息(包括导航链接),请考虑观看Paul Hudson 制作的这段精彩视频。就我个人而言,这对我帮助很大。