Eliminando viewcontrollers de la stack de navigation

Tengo una stack de navigation, con say 5 UIViewControllers. Quiero eliminar al tercer y cuarto control de la vista en la stack onclick en un button en el quinto control de la vista. ¿Es posible hacer esto? ¿Si es así, cómo?

Use este código y disfrute:

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers]; // [navigationArray removeAllObjects]; // This is just for remove all view controller from navigation stack. [navigationArray removeObjectAtIndex: 2]; // You can pass your index here self.navigationController.viewControllers = navigationArray; [navigationArray release]; 

Espero que esto te ayudará.

Primero puede get todos los controlleres de vista en la matriz y luego, después de verificar con la class de controller de vista correspondiente, puede eliminar la que desee.

Aquí hay una pequeña pieza de código:

 NSArray* tempVCA = [self.navigationController viewControllers]; for(UIViewController *tempVC in tempVCA) { if([tempVC isKindOfClass:[urViewControllerClass class]]) { [tempVC removeFromParentViewController]; } } 

Creo que esto facilitará tu trabajo.

Swift 3:

self.navigationController!.viewControllers.removeAll()

self.navigationController?.viewControllers.remove(at: "insert here a number")

Swift 2.1:

eliminar todo:

self.navigationController!.viewControllers.removeAll()

eliminar en el índice

self.navigationController?.viewControllers.removeAtIndex("insert here a number")

Hay un montón de más acciones posibles como removeFirst, range, etc.

Swift 2.0:

  var navArray:Array = (self.navigationController?.viewControllers)! navArray.removeAtIndex(navArray.count-2) self.navigationController?.viewControllers = navArray 

Si está intentando pasar al control de la segunda vista desde el controller de la 5ª vista (omitiendo la 3ª y la 4ª), le gustaría usar [self.navigationController popToviewController:secondViewController] .

Puede get el secondViewController de la stack del controller de navigation.

 secondViewController = [self.navigationController.viewControllers objectAtIndex:yourViewControllerIndex];