SwiftUI NavigationView 不记得状态

标签 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)
   }
}

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

Step By Step

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

无论如何将 NavigationView 的状态置于外部 @EnvironmentObject ,例如,使 NavigationView 的状态切换后保持不变。

最佳答案

是的,有一种非常简单的方法可以通过 NavigationLink 使用状态。
有一个可选的属性 isActive 你给一个 @Binding 变量,它也可以来自外部环境对象,使用可观察对象内的@Published 属性。
如果您想了解更多关于 SwiftUI NavigationView 的信息,包括导航链接,请考虑查看这个很棒的 video通过保罗 hudson 。它对我个人帮助很大。

关于SwiftUI NavigationView 不记得状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58334589/

相关文章:

swiftui - 为什么选择器只显示一行?

swift - 无法将类型 'NSRange'(又名 '_NSRange')的值转换为预期参数类型 'Range<Index>'(又名 'Range<String.CharacterView.Index>')

linux - Linux/Windows 上 Swift 的 GUI 生成器

ios - 如何调查 ios 中的内存泄漏?

swift - 在 ARKit 中调整相机焦点

ios - SwiftUI 与 rotation3DEffect 动画冲突

ios - 快速将后退按钮移至工具栏?

uitextfield - SwiftUI 将图像添加到文本字段的左侧

tabbar - 如何在 SwiftUI 中为选项卡栏项目(选择时)设置动画?

ios - SwiftUI:基于环境初始化ObservableObject