Ответ
SwiftUI предлагает декларативные API для различных сценариев навигации.
Основные компоненты:
-
NavigationStack(iOS 16+) — современная заменаNavigationView. Поддерживает глубокую навигацию и типобезопасную передачу данных черезnavigationDestination.struct ContentView: View { var body: some View { NavigationStack { List(1..<5) { number in NavigationLink("Item (number)", value: number) } .navigationDestination(for: Int.self) { value in DetailView(itemId: value) // Переход по значению } } } } -
NavigationView(устарел) — основа навигации до iOS 16. ИспользуетNavigationLinkс явным указаниемdestination. -
Модальные представления:
.sheet— стандартное модальное окно..fullScreenCover— полноэкранное модальное окно.@State private var showSettings = false Button("Show Settings") { showSettings.toggle() } .sheet(isPresented: $showSettings) { SettingsView() }
-
TabView— для таб-бара.TabView { HomeView() .tabItem { Label("Home", systemImage: "house") } ProfileView() .tabItem { Label("Profile", systemImage: "person") } } -
Программная навигация — через
NavigationPathвNavigationStackили состояние, управляемое@StateObject/@ObservableObject(координаторный паттерн).
Рекомендация: Для новых проектов используйте NavigationStack, так как он предоставляет больше контроля над стеком навигации и является будущим фреймворка.