Перейти к определенному виду в контроллере навигации

У меня есть 4 контроллера вида (A, B, C, D), и они подключены в этом порядке, и контроллер навигации указал на A. Мой вопрос в том, есть ли способ для меня перейти от A к C напрямую?

    Вы можете создать UIStoryboardSegue который соединяет A и C, а затем вызовите performSegueWithIdentifier: с соответствующим идентификатором в segue, чтобы вызвать его.

    попробуйте Unwind segue

    http://chrisrisner.com/Unwinding-with-iOS-and-Storyboards

    Что такое Unwind segues и как вы их используете?

    СВИФТ

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

     for viewcontroller in self.navigationController!.viewControllers as Array { if viewcontroller.isKindOfClass(HomeVC) { // change HomeVC to your viewcontroller in which you want to back. self.navigationController?.popToViewController(viewcontroller as! UIViewController, animated: true) break } } 

    Для Swift 3

      let viewControllers: [UIViewController] = self.navigationController!.viewControllers ; for aViewController in viewControllers { if(aViewController is YourViewController){ self.navigationController!.popToViewController(aViewController, animated: true); } } 

    Да, все, что вам нужно сделать, это создать экземпляр диспетчера представлений, а затем pushViewController:animated:

    UINavigationController должен делать все остальное за вас, включая выскакивание, когда вы будете готовы.

    надеюсь, что это поможет, вот источник

    Если вы используете nib, то этот код поможет

     NSArray *viewControllersArray=[self.navigationController viewControllers]; id viewController ; UIViewController *homeVC=nil; for(int i=0;i<[viewControllersArray count];i++) {viewController = [viewControllersArray objectAtIndex:i]; if([viewController isKindOfClass:[classname class]]) { homeVC=[viewControllersArray objectAtIndex:i]; break; } }if(homeVC) { [self.navigationController popToViewController:homeVC animated:YES]; }else{ classname *objViewController=[[classname alloc]init]; [self.navigationController pushViewController:objViewController animated:YES]; [objViewController release]; } 

    Пойдите, как это, к определенному контроллеру представления

     [self.navigationController popToViewController:[[self.navigationController viewControllers]objectAtIndex:1] animated:YES]; 

    Да, ты можешь. В целях безопасности предположим, что вы не знаете, порядок подключения ваших контроллеров View. Итак, теперь вам просто нужен класс, назначенный вашему контроллеру, C. Скажем, это ViewController_C.h.

    Шаг 1. Перейдите к инспектору класса в раскадровке и назначьте этот класс ViewController_C контроллеру C.

    введите описание изображения здесь

    Шаг 2. Теперь в классе View Controller, который назначен вашему контроллеру, A, напишите следующий метод.

     -(int)getViewControllerIndex{ int i=0; for(UIViewController *vc in [self.navigationController viewControllers]){ if([vc isKindOfClass:[ViewController_C class]]){ return i; } i++; } return 0; } 

    а затем вызовите этот метод всякий раз, когда вы хотите перейти к контроллеру C.

     int index = [self getViewControllerIndex]; [self.navigationController popToViewController:[[self.navigationController viewControllers]objectAtIndex:index] animated:YES]; 
    Давайте будем гением компьютера.