SwiftUI предоставляет два основных подхода к навигации, в зависимости от минимальной версии iOS, которую тебе нужно поддерживать.
NavigationStack — это рекомендуемое решение для приложений, нацеленных на iOS 16 и выше. Оно предлагает:
navigationDestination(for:)NavigationPathТипичная реализация выглядит так:
@State private var path = NavigationPath()
NavigationStack(path: $path) {
ContentView()
.navigationDestination(for: MyModel.self) { model in
DetailView(model: model)
}
}
NavigationView в сочетании с NavigationLink используется для обратной совместимости. Ключевые отличия:
NavigationStack для всех новых проектов, нацеленных на iOS 16+NavigationPath для управления полным стеком навигацииNavigationLink внутри NavigationView, так как это может вызвать неожиданное поведение| Требование | Решение |
|---|---|
| Только iOS 16+ | NavigationStack |
| Поддержка iOS 13–15 | NavigationView |
| Поддержка deep link | NavigationPath |
NavigationStack с data-driven подходом даёт более чистый и поддерживаемый код и соответствует современным архитектурным паттернам SwiftUI.
NavigationStack требует использования NavigationPath для сохранения полного стека навигации и включения программного управления состоянием навигации.
Новый — ещё не проверен сообществом
Вы