Ответ
UINavigationController хранит дочерние view-контроллеры в стековой структуре — массиве viewControllers. Управление происходит по принципу LIFO (Last-In, First-Out).
Основные операции:
- Push: Добавление контроллера в конец стека (он становится видимым).
navigationController?.pushViewController(detailVC, animated: true) - Pop: Удаление текущего (верхнего) контроллера из стека, возврат к предыдущему.
navigationController?.popViewController(animated: true)
Ключевые свойства:
viewControllers: [UIViewController]— массив, представляющий весь стек. Его можно читать и изменять напрямую (например, для массового удаления или вставки).topViewController: UIViewController?— контроллер, находящийся на вершине стека.visibleViewController: UIViewController?— контроллер, который в данный момент отображается на экране. Может отличаться отtopViewController, если поверх навигационного стека представлен модальный контроллер.
Особенность: Навигационный контроллер автоматически сохраняет и восстанавливает состояние стека при повороте устройства или переходе между состояниями приложения.