Вопрос проверяет знания об обновлённом API навигации в SwiftUI и отличиях между старым и новым подходом.
NavigationView — более ранний контейнер для навигации, который оборачивает вью в стек. NavigationStack появился в iOS 16 и управляет путём как списком состояний, даёт более гибкий контроль и поддержку глубоких переходов. Для новых проектов рекомендуют NavigationStack.
NavigationView:
Оборачивает контент и автоматически показывает NavigationBar.
Переходы задаются через .navigationLink.
Не хранит историю в виде данных—менее гибкий.
NavigationStack:
Использует path (массив значимых элементов) как источник правды.
Позволяет программно управлять стеком (push/pop).
Поддерживает глубокие навигации и восстановление состояния.
Пример NavigationStack:
struct ContentView: View {
@State private var path: [Int] = []
var body: some View {
NavigationStack(path: $path) {
List(0..<10, id: \.self) { i in
NavigationLink(value: i) {
Text("Item \(i)")
}
}
.navigationDestination(for: Int.self) { i in
Text("Detail \(i)")
}
}
}
}Когда использовать:
Для простых сценариев на iOS 13+ можно использовать NavigationView.
Для контроля пути, восстановления стека и глубоких ссылок — NavigationStack.