SwiftUI NavigationView 不记得状态

Posted

技术标签:

【中文标题】SwiftUI NavigationView 不记得状态【英文标题】:SwiftUI NavigationView not remember the state 【发布时间】:2019-10-11 05:10:44 【问题描述】:

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

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

var body: some View 
   TabView 
      NavigationView 
         View1()
      
         .tabItem  Text("View 1") 
         .tag(1)
      View2()
         .tabItem Text("View 2") 
         .tag(2)
   

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

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

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

【问题讨论】:

可以查看这个答案:***.com/questions/57772137/… 【参考方案1】:

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

【讨论】:

以上是关于SwiftUI NavigationView 不记得状态的主要内容,如果未能解决你的问题,请参考以下文章

NavigationView高度不规则swiftui

SwiftUI NavigationView 不记得状态

SwiftUI 弹出框在 NavigationView 中时消失

SwiftUI:检测 tvOS 上 NavigationView 中的选择更改

在 NavigationView 中清除 SwiftUI 列表未正确返回默认值

如何在启动时显示 NavigationView (SwiftUI) 的详细视图