给定的是 View1、View2 和 View3。
我将 View2 推到 View1 上。
有没有办法从View1 推送 View3 维护导航堆栈?
struct ContentView: View {
@State var selection: String? = nil
var body: some View {
NavigationView {
VStack() {
NavigationLink(destination: Text("secand"), tag: "secand", selection: $selection) { }
NavigationLink(destination: Text("third"), tag: "third", selection: $selection) { }
Button("first") {
selection = "secand"
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
selection = "third"
}
}
}
}
}
}
发生的情况是,当延迟块执行 View2 pops 然后 View3 被推送时,我不希望 View2 被弹出。
我希望堆栈为 View1 -> View2 -> View3
有没有一种方法可以让视图处理给定流的导航堆栈,而无需我将NavigationLink
每个视图都放入流中。
一个给定的场景为什么我想要这样的东西是:
我有一个 ParentView,它要求用户通过电话或电子邮件从两种不同类型的登录中进行选择。
两种类型都会打开 OTP 验证视图,我不想将 OTP 视图放在NavigationLink
电子邮件视图和电话号码视图中,我只想在 ParentView 中共享它。