【问题标题】:How can I hide the navigation back button in SwiftUI?如何在 SwiftUI 中隐藏导航返回按钮?
【发布时间】:2019-11-28 10:09:00
【问题描述】:
navigationBarBackButtonHidden(_ hidesBackButton: Bool) -> some View

但它仍然显示返回按钮,我想在点击时删除返回功能。

【问题讨论】:

  • 欢迎来到 SO!你能显示更多的代码吗? (也许甚至将其作为代码进行?)复制您的问题对我们会有所帮助。

标签: swift swiftui


【解决方案1】:

也许:

.navigationBarBackButtonHidden(true)

【讨论】:

  • 适用于 XCode 12.1
【解决方案2】:

我尝试将.navigationBarBackButtonHidden(true) 放在几个不同的地方。这是我观察到的行为。

struct PageOne: View {
    var body: some View {
        NavigationView {
            VStack{
                NavigationLink(destination: PageTwo()){
                    Text("Go to Page Two")
                }
            }
        }
    }
}

// Hide from page 2 -> page 1
struct PageTwo: View {
    var body: some View {
        VStack{
            NavigationLink(destination: PageThree()){
                Text("Go to Page Three")
            }.navigationBarBackButtonHidden(true)
        }
    }
}

// Hide from page 3 -> page 2 (Same behaviour as Kheldar's answer above)
struct PageTwo: View {
    var body: some View {
        VStack{
            NavigationLink(destination: PageThree().navigationBarBackButtonHidden(true)){
                Text("Go to Page Three")
            }
        }
    }
}


struct PageThree: View {
    var body: some View {
        Text("Hello!")
    }
}

【讨论】:

    【解决方案3】:

    这是解决方案,但不适用于 Xcode 11 beta 4:

    struct LiveView: View {
        var body: some View {
            NavigationView {
                NavigationLink(destination: ButtonView()) {
                    Text("Next screen")
                }
            }
        }
    }
    
    struct ButtonView: View {
        @State var navigationBarBackButtonHidden = true
    
        var body: some View {
            Button("Show back") {
                self.navigationBarBackButtonHidden = false
            }.navigationBarBackButtonHidden(navigationBarBackButtonHidden)
        }
    }
    

    还有navigationBarHidden在iPhone上不工作,但在watchOS上工作完美。

    【讨论】:

    • 这是最有用、最完整的解决方案
    【解决方案4】:

    我遇到了一种情况,我无法让 .navigationBarBackButtonHidden(true) 工作,直到我将它放在我嵌入到 NavigationLink 本身的视图上。

    NavigationLink(destination:MyView(stuff: aStuff, onDismiss: {})) {
             HStack {
                 Text(aStuff.interestingText)
             }
    } // <- used to set it here, doesn't work for me
    

    与:

    struct MyView: View {
    
        var aStuff: Stuff
        var onDismiss: () -> Void
    
        var body: some View {
              VStack(alignment: .leading) {
                   Button(action: self.onDismiss) {
                       Image(systemName: "chevron.left.circle")
                   }
                   CoolAnimatedStuffDisplayer(stuff: aStuff)
              }
              .navigationBarBackButtonHidden(true) // <--- works here
        }
    }
    

    【讨论】:

      【解决方案5】:

      通过导航链接使用

      NavigationLink(destination: SomePage().navigationBarBackButtonHidden(true), tag: 1, selection: $selection) {
          //..
      }
      

      .navigationBarBackButtonHidden(true) 将隐藏后退按钮。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        相关资源
        最近更新 更多