我有三个观点,比如说view1,view2和view3。
view1是主屏幕。
现在,我向view2介绍naviagationView。
现在,在某些情况下,我已经从view2中推出了view 3。
所以简而言之,场景是view1(home) -> presented NavigationView(view2) -> pushed view3
现在,从view3,我想取消导航视图,并希望回到view1(主页)。
如果我将presentationMode
环境变量作为presentationMode.wrappedValue.dismiss
进行调用,那么它将弹出到view2,但我想取消整个导航视图。
在这里,我刚刚推了一个观点。但有可能,我可能已经推动7-8视图,并希望取消完整的导航视图从那里。
在swiftUI中有办法做到这一点吗?
发布于 2022-11-10 07:08:54
有一天,我意识到,当你使用NavigationStack或NavigationView时,当你开始用NavigationLink显示视图时,如果你长时间按后退按钮,它会显示一个菜单,上面有所有先前视图的名称,这样你就可以选择返回的位置了。所以,如果你有这样的东西,有四个层次:
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink("Go to second view") {
NavigationLink("Go to third view") {
NavigationLink("Go to forth view"){
Text("The end")
}.navigationTitle("Third View").navigationBarTitleDisplayMode(.inline)
}.navigationTitle("Second View").navigationBarTitleDisplayMode(.inline)
}.navigationTitle("Home View").navigationBarTitleDisplayMode(.inline)
}
}
}
你会看到这个小菜单
我还找到了本文https://www.macrumors.com/guide/ios-14-hidden-features/,它似乎是iOS 14的一个特性。问题是,如果您的应用程序设置为与以前版本的iOS工作,您将不得不找到另一种方法来做到这一点。
发布于 2022-11-10 07:32:08
试试这种方法
struct ContentView: View {
@State var id = UUID()
var body: some View {
NavigationView {
NavigationLink {
NavigationLink {
VStack {
Text("Third")
Button {
id = UUID()
} label: {
Text("Clear Stack")
}
}.navigationTitle("Third")
} label: {
Text("Go Third")
}.navigationTitle("Second")
} label: {
Text("Go Second")
}.navigationTitle("First")
}.id(id)
}
}
https://stackoverflow.com/questions/74384975
复制相似问题