TGViewer
Swift | Вопросы собесов Swift | Вопросы собесов @easy_swift · 2.16K subscribers
Post #1962 253
🤔 Что будет, если открыть несколько экранов и сделать dismiss последнего?

Когда вы открываете несколько экранов (UIViewController) в iOS, они обычно создают стек представлений (View Controller Stack). В зависимости от способа открытия экранов (модально или через навигационный стек), поведение dismiss будет разным.

🚩Модальное представление (`present`)

Если экраны открывались модально (present), то dismiss на последнем экране просто закроет только этот экран, и управление вернётся к предыдущему.
let newVC = UIViewController()
present(newVC, animated: true)


Позже вызываем:
dismiss(animated: true)


Если вызвать dismiss на первом модально представленном контроллере, все последующие модальные контроллеры закроются сразу.
// Открываем два экрана последовательно
let vc1 = UIViewController()
let vc2 = UIViewController()
present(vc1, animated: true)
vc1.present(vc2, animated: true)


Если вызвать dismiss на vc2:
vc2.dismiss(animated: true)


Если вызвать dismiss на vc1:
vc1.dismiss(animated: true)


🚩Навигационный стек (`push`)

Если экраны открывались через UINavigationController (pushViewController), то dismiss не работает для удаления последнего экрана. Нужно использовать popViewController.
let vc1 = UIViewController()
let vc2 = UIViewController()
navigationController?.pushViewController(vc1, animated: true)
navigationController?.pushViewController(vc2, animated: true)


Теперь если мы вызовем:
vc2.dismiss(animated: true)


Правильный способ закрытия последнего экрана в UINavigationController:
navigationController?.popViewController(animated: true)


Если вы хотите закрыть весь стек экранов, используйте:
navigationController?.popToRootViewController(animated: true)


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 3
More from @easy_swift
  1. Oct 11, 2026🤔 Кто обрабатывает тач и как и куда он проходит? 1. Система получает событие тача через с…
  2. Oct 11, 2026🤔 Где фреймы наиболее яркий пример использования? Фреймы (frames) в iOS-разработке исполь…
  3. Oct 10, 2026🤔 Что будет, если на serial очереди запустить асинхронную Task? Асинхронная задача начнёт…
  4. Oct 9, 2026🤔 Что известно о Swift Intermediate Language (SIL)? SIL (Swift Intermediate Language) — э…
  5. Oct 9, 2026🤔 Что под капотом стэка? Это абстрактная структура данных, работающая по принципу LIFO (L…
  6. Oct 8, 2026🤔 Как хранить объекты классов в массиве по weak-ссылке? Обычно для этого используют обёрт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →