【问题标题】:how to hide navigation bar on particular screen in SwiftUI?如何在 SwiftUI 中隐藏特定屏幕上的导航栏?
【发布时间】:2021-09-20 06:48:03
【问题描述】:

我在前一个屏幕上从一个屏幕导航到另一个屏幕,我隐藏了导航栏,但在第二个屏幕上我想显示导航栏,但万一它也隐藏在第二个屏幕上。

导航栏隐藏在第一个屏幕上

.navigationBarHidden(true)

如何在第二个屏幕上显示导航栏? (我没有在任一屏幕上使用导航视图)

我的第一个父屏幕有

            NavigationView {
//design
}
.navigationBarTitle("ABCScreen", displayMode: .inline)
                .navigationViewStyle(StackNavigationViewStyle())

感谢您的帮助。

【问题讨论】:

  • 在您的第二个视图中,您的 NavigationBar 不得隐藏。 .navigationBarHidden(false)
  • @AdR 是的,还是看不到导航栏

标签: ios swift swiftui


【解决方案1】:

在根视图中隐藏导航栏并在子子视图中显示的可能方法。

struct FirstNavigationView: View {
    @State private var hideBar = true // <<  hide state
    var body: some View {
        NavigationView {
            VStack {
                Text("FirstView")
                Divider()
                NavigationLink("Goto Child", destination: NextChildView(index: 1))
                 .simultaneousGesture(TapGesture().onEnded {
                    self.hideBar = false     // << show
                 })
            }
            .navigationBarHidden(hideBar)
        //    .navigationBarTitle("Back to Root") // << choice 
            .onAppear {
                self.hideBar = true  // << hide on back
            }
        }
    }
}

唯一需要的修改是在根视图中。

【讨论】:

【解决方案2】:

对于您的第一个屏幕,您可以在 NavigationView 中添加 .navigationBarHidden(true) 以隐藏它,并在第二个屏幕上添加 false 以取消隐藏。

第一屏:

NavigationView{
        Button(action: {}, label: {
            Text("Button")
        })
        .navigationBarHidden(true) //This flag will hide your navigationBar
    }

第二屏:

NavigationView{
        Button(action: {}, label: {
            Text("Button")
        })
        .navigationBarHidden(false) //This flag will unhide your navigationBar
    }

【讨论】:

    猜你喜欢
    • 2021-06-01
    • 2019-11-06
    • 2019-01-22
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多