Какие основные механизмы показа нового экрана (ViewController) существуют в iOS?

«Какие основные механизмы показа нового экрана (ViewController) существуют в iOS?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В iOS (UIKit) есть три основных паттерна для отображения новых экранов:

1. Модальный показ (Present Modally)

Контроллер отображается поверх текущего контекста, временно перехватывая взаимодействие.

let modalVC = ModalViewController()
modalVC.modalPresentationStyle = .pageSheet // Стиль презентации
present(modalVC, animated: true)

Стили: .fullScreen, .pageSheet, .formSheet, .popover.

2. Навигация через стек (Push/Pop)

Использует UINavigationController для управления иерархией экранов.

// Переход вперед
navigationController?.pushViewController(nextVC, animated: true)
// Возврат назад
navigationController?.popViewController(animated: true)

3. Замена корневого контроллера окна

Полная смена пользовательского интерфейса приложения (например, после логина).

window?.rootViewController = newRootViewController

Дополнительные механизмы:

  • UISplitViewController: Для master-detail интерфейсов (iPad).
  • UITabBarController: Переключение между независимыми разделами приложения.
  • Кастомные переходы: Реализация протокола UIViewControllerTransitioningDelegate для нестандартных анимаций.