SwiftUI navigationView仅从第二个屏幕返回,而不是从下一个屏幕返回

时间:2020-04-22 14:31:31

标签: ios swift swiftui

SwiftUI出现问题。 基本上这是我的视图图:

View1-> View2-> View3->等等

现在,我想在View2中显示一个后退按钮,但是当用户查看3时,它应该不可见。 我尝试隐藏和删除项目,但仍然可以在下一个视图上看到“后退”按钮,这将使我回到View1。

3 个答案:

答案 0 :(得分:0)

由于我无法用一种纯正的方式来完成此操作,因此我创建了一个自定义按钮,该按钮具有dismiss操作,该按钮具有内容,并且仅当isShowingButton属性为true时该操作才有效,然后进入下一个视图时,将其切换为假。它可行,也许不是最好的方法,但是可行。如果有人以某种方式知道解决它的更好方法,我将不胜感激

答案 1 :(得分:-1)

导航到View 3时,您需要将.navigationBarBackButtonHidden(true)添加到NagivationLink中

struct ViewTwo: View {

var body: some View {
    NavigationLink(destination: SecondView().navigationBarBackButtonHidden(true)
    ) {
        Text("Go to View 3")

    }
    .navigationBarTitle("View 2", displayMode: .inline)

}

}

答案 2 :(得分:-1)

在看不到您的代码的情况下,很难分辨出问题出在哪里。

但是以下代码对我有用

struct ContentView: View {

    var body: some View {
        NavigationView {
            FirstView()
        }
    }
}

struct FirstView: View {

    var body: some View {
        NavigationLink(destination: SecondView()
        ) {
            Text("Go to Second View")

        }
        .navigationBarTitle("FirstView", displayMode: .inline)

    }
}

struct SecondView: View {

    var body: some View {
        NavigationLink(destination: ThirdView().navigationBarBackButtonHidden(true)
        ) {
            Text("Go to Third View")
        }
        .navigationBarTitle("SecondView", displayMode: .inline)
    }
}

struct ThirdView: View {

    var body: some View {
            Text("Third View without Back Button")
        .navigationBarTitle("Third View", displayMode: .inline)
    }
}

Navigation without Back Button