Search code examples
swiftxcodeswiftuinavigationbarnavigationview

Multiple NavigationBars showing when linking SwithUI Views


I've got two SwiftUI Views that are separate files that I'm linking with a NavigationLink:

View1:

struct ViewOne: View {

    var body: some View {
        NavigationView {
        VStack {
        NavigationLink(destination: ViewTwo()
       .navigationBarBackButtonHidden(true)
) {
                Text("Go to second view")
            }
.navigationBarTitle(Text("First View"), displayMode: .inline)
            }}}}

View2:

struct ViewTwo: View {

        var body: some View {
            NavigationView {
            VStack {
                    Text("Hello world")
                }
    .navigationBarTitle(Text("Second View"), displayMode: .inline)
                }}}

Problem: On View2 I don't want the .navigationBarBackButton so I've set this to hidden within ViewOne but because I've set this to hidden it messes with the existing NavigationBar on ViewTwo and displays multiple NavigationBars

View2

How do I disable the navigationBarBackButton without it messing with the existing NavigationBar on View2?


Solution

  • NavigationView in one view hierarchy should be only one, so just remove it in ViewTwo:

    struct ViewTwo: View {
    
            var body: some View {
                VStack {
                   Text("Hello world")
                }
                .navigationBarTitle(Text("Second View"), displayMode: .inline)
            }
    }