Skip to main content

How to push a new view onto a NavigationStack

About 2 minSwiftSwiftUIArticle(s)bloghackingwithswift.comcrashcourseswiftswiftuixcodeappstore

How to push a new view onto a NavigationStack 관련

SwiftUI by Example

Back to Home

How to push a new view onto a NavigationStack | SwiftUI by Example

How to push a new view onto a NavigationStack

Updated for Xcode 15

SwiftUI lets us push any view onto a NavigationStack by using NavigationLink. In its simplest form you can provide this with a string for its title and a destination view as a trailing closure, and NavigationStack will care of pushing the new view on the stack for us along with animation.

For example, this creates a simple DetailView struct, then presents it from a NavigationStack:

struct DetailView: View {
    var body: some View {
        Text("This is the detail view")
    }
}

struct ContentView: View {
    var body: some View {
        NavigationStack {
            VStack {
                NavigationLink("Show Detail View") {
                    DetailView()
                }
            }
            .navigationTitle("Navigation")
        }
    }
}

Download this as an Xcode projectopen in new window

If you need more advanced control over the label, pass it as a secondary trailing closure. For example, this uses a Label view rather than a simple string:

struct DetailView: View {
    var body: some View {
        Text("This is the detail view")
    }
}

struct ContentView: View {
    var body: some View {
        NavigationStack {
            VStack {
                NavigationLink {
                    DetailView()
                } label: {
                    Label("Show Detail View", systemImage: "globe")
                }
            }
            .navigationTitle("Navigation")
        }
    }
}

Download this as an Xcode projectopen in new window

SwiftUI will automatically style your links as buttons so users know they are interactive. You can disable this behavior by applying .buttonStyle(.plain) to NavigationLink.

Similar solutions…

How to push a new view onto a NavigationView

How to push a new view when a list row is tapped | SwiftUI by Example

How to push a new view when a list row is tapped
How to save and load NavigationStack paths using Codable | SwiftUI by Example

How to save and load NavigationStack paths using Codable
SwiftUI tips and tricks | SwiftUI by Example

SwiftUI tips and tricks
How to convert a SwiftUI view to an image | SwiftUI by Example

How to convert a SwiftUI view to an image

이찬희 (MarkiiimarK)
Never Stop Learning.