刷新 SwiftUI 父视图会导致子视图刷新吗?

时间:2021-04-19 02:06:41

标签: swiftui swiftui-navigationview swiftui-tabview

我有一个 TabView,有 2 个标签,TabA 和 TabB。两者都是围绕主视图的 NavigationView,并且每个主视图都有多个 NavigationLink 到子视图。我想支持以下 2 个功能:

  1. 能够导航到 TabA 的任何子项,单击 Tab B,单击返回 TabA,然后查看与交换选项卡之前完全相同的子视图。据我了解,这是为 iOS14 构建时 SwiftUI 的现有功能。

  2. 能够导航到 TabA 的任何子项,单击 Tab B,单击返回 TabA,再次单击 TabA,然后转到 TabA 的根视图。我在 Facebook、Twitter 等其他应用中看到了此功能。

我的计划是在 TabA 的根视图中添加一个 id,并通过在用户单击同一选项卡两次时重置它来使该 id 无效,从而刷新根视图并导致我的 NavigationView 返回到根视图。我从以下帖子 (https://designcode.io/swiftui-handbook-tabbar-to-root-view) 中得到了这个想法。但是,我注意到这会导致功能 #1 中断,因为当我离开 TabA 并返回时,子视图也已刷新。

这是由于父视图刷新,并导致此子视图也刷新吗?我没有将任何 @Binding 从父视图传递给子视图,也没有任何子视图构造函数的参数。

是否有另一种纯 SwiftUI 方法来支持功能 #2?我刚刚开始学习 SwiftUI,但不确定如何强制我的 TabView 导航到根视图。

在此先感谢您的帮助!

0 个答案:

没有答案