从导航控制器中popup多个视图

我有一个应用程序,它的rootview是一个菜单,用户通过select一个加载另一个子视图的单元格来设置一个search查询的4个tableviews,所以基本的结构看起来像这样

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

但其中一个父视图search参数要求另一个子视图被推到导航堆栈,所以它看起来像

 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) 

我想知道是否有办法从这个子视图回弹到父视图..我知道你可以popup单个视图或popup回到rootview,但在这种情况下,我想popup两个子视图…是这可能吗?

UINavigationViewController

popToViewController:animation:

popup视图控制器,直到指定的视图控制器位于导航堆栈的顶部。

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

您可以添加一个类别到UINavigationController,以允许一次popup多个控制器。

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 

然后从视图控制器,您可以:

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