Zurück zum Blog

SwiftUI Navigation Stack verstehen

Wie NavigationStack und NavigationPath die App-Navigation in SwiftUI vereinfachen.

Navigation in SwiftUI – der moderne Weg

Seit iOS 16 bietet SwiftUI mit NavigationStack eine deutlich flexiblere Alternative zu NavigationView. Hier zeige ich, wie man damit arbeitet.

NavigationStack Basics

Der einfachste Einstieg:

SWIFT
NavigationStack {
    List(items) { item in
        NavigationLink(item.name, value: item)
    }
    .navigationDestination(for: Item.self) { item in
        DetailView(item: item)
    }
}

Der grosse Vorteil gegenueber dem alten NavigationLink(destination:): Die Navigation ist datengetrieben statt view-getrieben.

NavigationPath fuer programmatische Navigation

Mit NavigationPath kann man den Navigation-Stack programmatisch steuern:

SWIFT
@State private var path = NavigationPath()

NavigationStack(path: $path) {
Button("Go to Detail") {
path.append(myItem)
}
.navigationDestination(for: Item.self) { item in
DetailView(item: item)
}
}

Das ermoeglicht:

  • Deep Linking – Navigation direkt zu einer bestimmten Seite
  • Pop to Root – Zurueck zum Anfang mit path.removeLast(path.count)
  • State Restoration – NavigationPath ist Codable

Mehrere Zieltypen

Man kann verschiedene Datentypen als Navigation-Ziele registrieren:

SWIFT
NavigationStack(path: $path) {
    ContentView()
        .navigationDestination(for: User.self) { user in
            UserView(user: user)
        }
        .navigationDestination(for: Settings.self) { settings in
            SettingsView(settings: settings)
        }
}

Fazit

NavigationStack ist der richtige Weg fuer neue SwiftUI-Projekte. Die datengetriebene Navigation macht den Code sauberer und ermoeglicht Features wie Deep Linking ohne grossen Aufwand.

Teilen: