Подтвердить что ты не робот

Отклонить нажатый вид изнутри навигационного контроллера

У меня есть контроллер навигации с контроллером просмотра, отображающим кнопку. Кнопка привязана к другому контроллеру просмотра с помощью кнопки push segue, которая автоматически добавляет верхнюю панель навигации с помощью кнопки "Назад" . Все это прекрасно работает. Нажатие кнопки "Назад" сдвигает 2-й вид и возвращается к 1-му.

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

Теперь мне просто нужно снять 2-й нажатый вид с кода, как если бы была нажата кнопка "Назад" . Я пробовал использовать rejectModalViewCcontrollerAnimated и rejectViewControllerAnimated, однако оба они отклоняют весь контроллер навигации, который удаляет вид 2 и 1 (возврат бака в основное меню).

Каков правильный способ сместить вид.

4b9b3361

Ответ 1

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

- (UIViewController *)popViewControllerAnimated:(BOOL)animated

на нем.

Ответ 2

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

self.navigationController?.popViewControllerAnimated(true)

Ответ 3

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

self.navigationController?.popToRootViewControllerAnimated(true)

Ответ 4

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

@IBAction func backButtonClicked(_ sender: Any) {
    self.navigationController?.popViewController(animated: false)
}

Ответ 5

В Objective-C есть

[self.navigationController popViewControllerAnimated:YES];

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

[self.navigationController popToRootViewControllerAnimated:YES];

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

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

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