UINavigationController — это стандартный контроллер UIKit, управляющий стековой навигацией между view controllers. Это фундаментальный компонент iOS-приложений, обеспечивающий иерархическую навигацию.
topViewController// Базовый пример инициализации
let navController = UINavigationController(rootViewController: mainVC)
window?.rootViewController = navController
View Hierarchy:
UINavigationBar (верхняя панель)UIToolbar (нижняя панель, опционально)UIView для содержимого текущего VCУправление стеком:
viewControllers)Ключевые методы:
pushViewController(_:animated:) — добавляет VC в стекpopViewController(animated:) — удаляет верхний VCpopToRootViewController(animated:) — возврат к корневому VC// Пример навигации
func showDetail() {
let detailVC = DetailViewController()
navigationController?.pushViewController(detailVC, animated: true)
}
Сохранение состояния:
UIStateRestorationЖизненный цикл:
viewWillAppear/viewDidDisappear срабатывают корректноОптимизации:
Стиль навигации:
navigationBar.isTranslucent — прозрачностьnavigationBar.barTintColor — цвет фонаКастомные переходы:
UINavigationControllerDelegate// Пример кастомного back-действия
navigationItem.leftBarButtonItem = UIBarButtonItem(
title: "Назад",
style: .plain,
target: self,
action: #selector(customBackAction)
)
Без навигационного контроллера:
Кастомные решения:
| Преимущества | Ограничения |
|---|---|
| Стандартное поведение (HIG) | Жесткая стековая модель |
| Автоматическая back-кнопка | Сложные неиерархические переходы |
| Поддержка жестов (swipe back) | Ограниченная кастомизация |
| Интеграция с системными контроллерами |
UINavigationController — это мощный системный компонент для иерархической навигации, реализующий стековую модель с автоматическим управлением view controllers, навигационной панелью и переходами. Оптимален для большинства стандартных сценариев навигации в iOS-приложениях.