2016-08-12 5 views
-1

Если я использую 5 диспетчеров вида в своем приложении, и если бы я был на 5-м контроллере представления, какой код я должен писать, если я хочу вернуться к 2-му контроллеру представления при действии кнопки?Как вернуться к контроллеру?

+8

Вы смотрели на документацию для 'UINavigationController'? – rmaddy

ответ

1

Единственное, что вы можете сделать, это popToViewController.

Итак, есть несколько шагов:

  1. Получить UIViewController, который вы хотите, чтобы вернуться.
  2. Выведите все контроллеры просмотра из контроллера навигации, сделав что-то вроде self.navigationController.viewControllers.
  3. Запустите для каждого цикла и добавьте условие if для каждого, чтобы он соответствовал контроллеру вида, который вы хотите перейти с шага 1.
  4. Используйте метод навигации popToViewController.

Нечто подобное следующим образом:

for (UIViewController *vc in self.navigationController.viewControllers) { 
    if ([vc isKindOfClass:[ViewController2 class]]) { 
     [self.navigationController popToViewController:vc animated:NO]; 
    } 
} 
+0

Первый аргумент 'popToViewController' должен быть переменной' vc'. – rmaddy

+0

Нет необходимости в цикле или 'if'. Просто сделайте '[self.navigationController popToViewController: self.navigationController.viewControllers [1] анимированный: YES];'. Массив 'viewControllers' будет находиться в том порядке, в котором будут располагаться контроллеры представлений. – rmaddy

+0

@rmaddy Исправил ответ, спасибо за указание. И да, я предложил ему цикл for, потому что он мог бы знать, к какому классу контроллера идти, но не знает индекс. – Harsh

Смежные вопросы