从 SwiftUI 中的导航堆栈中删除屏幕

时间:2021-04-16 15:34:48

标签: swiftui swiftui-navigationlink swiftui-navigationview

我正在使用 NavigationLinkNavigationView 中导航屏幕。 如何从导航堆栈中删除屏幕? 不只是隐藏导航“返回”按钮,而是从堆栈中完全删除屏幕?

例如,我有这样的屏幕链:A -> B -> C 如何移除屏幕 B 以从 C 返回到 A

或者,另一个例子,如何删除屏幕AB,使C屏幕成为根?

或者这一切都不是 SwiftUI 的概念?

1 个答案:

答案 0 :(得分:2)

就您的第一个问题(从 CA)而言,这通常被称为“popping to root”并且在 SO 上有许多解决方案,包括:{{3} }

您的第二个问题(将 A 替换为 C 作为根视图)有点不同。您可以通过在视图层次结构中将 A 替换为 C 来实现。为了做到这一点,您需要有某种方式与父视图进行通信——我选择了一个简单的 @State/@Binding 来做到这一点,但可以使用 {{1} } 甚至是回调函数。

ObservableObject