Hacer varias vistas desde el controller de navigation

Tengo una aplicación cuya vista raíz es un menu de 4 vistas de tabla que el usuario usa para configurar una consulta de búsqueda al seleccionar una celda que carga otra subvista, por lo que la estructura básica se ve así

Root View - Parent View (search view) --Sub View (user selects variables here to fill search parameters of the parent view 

Pero uno de los parameters de búsqueda de Parent View requiere que otra vista secundaria se presione en la stack de navigation para que se vea como

 Root View - Parent View (search view) --Sub View (user selects variables here to fill search parameters of the parent view ---Sub View (related values to the previous subview ie Model / sub model) 

Me gustaría saber si hay una manera de regresar a la vista de los padres desde esta Vista secundaria … Sé que puede abrir una sola vista o regresar a la vista de raíz, pero en esta ocasión quiero abrir dos subvistas … es esto es posible

UINavigationViewController

popToViewController: animado:

Pops view controllers hasta que el controller de vista especificado esté en la parte superior de la stack de navigation.

 - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 

Puede agregar una categoría a UINavigationController para permitir que se aparezcan varios controlleres a la vez.

UINavigationController + VariablePop.h

 #import <UIKit/UIKit.h> @interface UINavigationController (VariablePop) - (NSArray *)popViewControllers:(int)numPops animated:(BOOL)animated; @end 

UINavigationController + VariablePop.m #import "UINavigationController + VariablePop.h"

 @implementation UINavigationController (VariablePop) - (NSArray *)popViewControllers:(int)numPops animated:(BOOL)animated { NSMutableArray* returnedControllers = [NSMutableArray array]; int indexToPopTo = self.viewControllers.count - numPops - 1; for(int i = indexToPopTo+1; i < self.viewControllers.count; i++) { UIViewController* controller = [self.viewControllers objectAtIndex:i]; [returnedControllers addObject:controller]; } UIViewController* controllerToPopTo = [self.viewControllers objectAtIndex:indexToPopTo]; [self popToViewController:controllerToPopTo animated:YES]; return returnedControllers; } @end 

Y luego desde el controller de vista puede:

 NSArray* poppedControllers = [self.navigationController popViewControllers:2 animated:YES];