Отклонить выдвинутый вид изнутри контроллера навигации - PullRequest
23 голосов
/ 25 февраля 2012

У меня есть Навигационный контроллер с View Controller, отображающим кнопку. Кнопка связана с другим View Controller с помощью push-перехода, который автоматически добавляет верхнюю панель навигации с кнопкой возврата. Это все отлично работает. Нажатие кнопки «Назад» сдвигает 2-й вид и возвращает к 1-му.

У меня есть кнопка на 2-м контроллере вида, которая при нажатии запускает некоторый код и вызов делегата обратно на 1-й контроллер вида. Опять же, это прекрасно работает.

Теперь мне просто нужно закрыть 2-й нажатый вид из кода, как если бы была нажата кнопка «Назад». Я попытался использовать dismissModalViewCcontrollerAnimated и dismissViewControllerAnimated, однако они оба отклоняют весь Navigation Controller, который удаляет представления 2 и 1 (возвращая bak в главное меню).

Как правильно соскользнуть с вида.

Ответы [ 5 ]

37 голосов
/ 25 февраля 2012

Получите ссылку на свой UINavigationController и позвоните

- (UIViewController *)popViewControllerAnimated:(BOOL)animated

на нем.

11 голосов
/ 27 августа 2015

В Swift это будет вызывать метод

self.navigationController?.popViewControllerAnimated(true)
2 голосов
/ 07 марта 2017

Если мы используем push segue, то используем popViewController

@IBAction func backButtonClicked(_ sender: Any) {
    self.navigationController?.popViewController(animated: false)
}
2 голосов
/ 22 июня 2016

В swift вы также можете позвонить:

self.navigationController?.popToRootViewControllerAnimated(true)
1 голос
/ 02 марта 2017

On Objective-C равен

[self.navigationController popViewControllerAnimated:YES];

для перехода к первому root контроллеру

[self.navigationController popToRootViewControllerAnimated:YES];

или является возможным переходом к конкретному контроллеру

[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)];

Анимация, специфичная для анимации процесса перемещения контроллера.Если анимация false, контроллер появится без анимации.UIViewController должен быть от того, который находится в стеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...