2

В настоящее время я пишу приложение, которое использует встроенные навигационные контроллеры. Мне нужно перейти к первоначальному виду первого контроллера представления из встроенного.Pop to initial view controller

Эта строка кода просто возвращает меня к первоначальному мнению внедренного navigationController:

[self.navigationController popToRootViewControllerAnimated: YES];

Любые идеи?

+1

Можете ли вы сказать иерархию вам приложение и где вы хотите поп? – KudoCC

+0

Если это выяснилось. Я только что заменил [self.navigationController. popToRootViewControllerAnimated: ДА]; с [self.navigationController.navigationController popToRootViewControllerAnimated: YES]; – user3250926

+0

navigationController свойство UIViewController возвращает «Ближайший предок в иерархии диспетчера представлений, который является навигационным контроллером». Кажется, у вас есть два контроллера навигации, один из которых является дочерним контроллером другого. – KudoCC

ответ

5

Вы можете сделать некоторую рекурсивную функцию, подобную этой. Назовите это, что бы вы ни хотели или не сделали его категорией для удобства.

- (void)recursivePop:(UIViewController *)viewController 
{ 
    if (viewController.navigationController) 
    { 
     [viewController.navigationController popToRootViewControllerAnimated:YES]; 
     [self recursivePop:viewController.navigationController]; 
    } 
} 

Затем в контроллере вида вы хотите вызвать это, позвонив так.

[self recursivePop:self]; 
0

Swift версия:

func recursivePop(controller: UIViewController?){ 

    if let controller = controller { 
     if let nav:UINavigationController = controller.navigationController { 
      nav.popToRootViewControllerAnimated(true) 
      self.recursivePop(controller) 
     } 

    if let split:UISplitViewController = controller.splitViewController { 
      if let nav:UINavigationController = split.navigationController { 
       nav.popToRootViewControllerAnimated(true) 
       self.recursivePop(controller) 
      } 
     } 
    } 
} 
+1

Подумайте, что это можно упростить, заменив внутреннюю часть секции splitcontroller на self.recursivePop (split) – GregP

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