微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决刷新 SwiftUI 父视图会导致子视图刷新吗?

我有一个 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 导航到根视图。

在此先感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。