Ответ
Вызов dismiss(animated:) у последнего (верхнего) контроллера в стеке навигации закроет его, вернув пользователя к предыдущему контроллеру в стеке. Это стандартное поведение для модально представленных контроллеров. Для стеков навигации обычно используют popViewController.
Сценарий и результат:
// Исходный стек навигации: [RootVC, SecondVC, TopVC]
// В TopVC вызываем:
self.dismiss(animated: true)
// Результат: стек становится [RootVC, SecondVC], TopVC удаляется.
| Ключевые различия методов: | Метод | Назначение | Результат для стека навигации |
|---|---|---|---|
dismiss(animated:) |
Закрытие модально представленного контроллера. | Если контроллер был в стеке навигации, он из него удаляется. | |
popViewController(animated:) |
Удаление верхнего контроллера из стека навигации. | Более явный и предпочтительный способ для навигационных стеков. |
Нюанс: Если dismiss вызывается у корневого (root) контроллера в стеке, ничего не произойдёт, так как нечего закрывать.