Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Swift : swiftui, navigationstack, navigationview

Как реализована навигация в SwiftUI (NavigationStack vs NavigationView)?

Вопрос проверяет знания об обновлённом 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.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Swift

    Swift

Ключевые слова

#swiftui

#navigationstack

#navigationview

Подпишись на iOS Developer в телеграм