首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >取消SwiftUI中的导航视图

取消SwiftUI中的导航视图
EN

Stack Overflow用户
提问于 2022-11-10 06:32:24
回答 2查看 37关注 0票数 -1

我有三个观点,比如说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中有办法做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2022-11-10 07:08:54

有一天,我意识到,当你使用NavigationStack或NavigationView时,当你开始用NavigationLink显示视图时,如果你长时间按后退按钮,它会显示一个菜单,上面有所有先前视图的名称,这样你就可以选择返回的位置了。所以,如果你有这样的东西,有四个层次:

代码语言:javascript
运行
复制
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工作,您将不得不找到另一种方法来做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2022-11-10 07:32:08

试试这种方法

代码语言:javascript
运行
复制
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)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74384975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档