我正在使用 NavigationLink
在 NavigationView
中导航屏幕。
如何从导航堆栈中删除屏幕?
不只是隐藏导航“返回”按钮,而是从堆栈中完全删除屏幕?
例如,我有这样的屏幕链:A -> B -> C
如何移除屏幕 B
以从 C
返回到 A
?
或者,另一个例子,如何删除屏幕A
和B
,使C
屏幕成为根?
或者这一切都不是 SwiftUI 的概念?
答案 0 :(得分:2)
就您的第一个问题(从 C
到 A
)而言,这通常被称为“popping to root”并且在 SO 上有许多解决方案,包括:{{3} }
您的第二个问题(将 A
替换为 C
作为根视图)有点不同。您可以通过在视图层次结构中将 A
替换为 C
来实现。为了做到这一点,您需要有某种方式与父视图进行通信——我选择了一个简单的 @State
/@Binding
来做到这一点,但可以使用 {{1} } 甚至是回调函数。
ObservableObject