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-приложениях.