首页 > 解决方案 > 如何导航到 NavigationView 内的任何视图

问题描述

我有这 3 个不同的视图,它们都通过NavigationView. 我正在尝试找到一种方法来导航到较早的页面,NavigationView但我希望过渡看起来像是在倒退。

struct Testing: View {
    
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination:testing2()) { Text("Go to two") }
            }
            .navigationBarTitle("Navigation")
        }
    }
}

struct testing2 : View {

    var body: some View{
        VStack {
            NavigationLink(destination: testing3()) { Text("Go to third") }
        }
        .navigationBarTitle("Second Page")
    }
}

struct testing3 : View {

    var body: some View{
        VStack {
            Text("Go back to first")
        }
        .navigationBarTitle("Third Page")
    }
}

我已经找到了一个解决方案,它使用了一个可观察对象、一个环境变量以及NavigationLink.

他们是使导航转换转到特定页面的更简单的解决方案吗?如果它是在当前视图执行向后转换之前的视图?

标签: swiftswiftuiswiftui-navigationview

解决方案


更简单的解决方案是将您的第三个视图修改如下:

struct testing3 : View {
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    
    var body: some View{
        VStack {
            Button(action: {
                self.presentationMode.wrappedValue.dismiss()
                self.presentationMode.wrappedValue.dismiss()
            }) {
                Text("Go back to first")
            }
            
        }
        .navigationBarTitle("Third Page")
    }
}

推荐阅读