Ios 有可能弹出n-2或n-3视图吗?

Ios 有可能弹出n-2或n-3视图吗?,ios,iphone,cocoa,Ios,Iphone,Cocoa,我知道,通过以下操作可以轻松弹出到上一个viewController: [self.navigationController popViewControllerAnimated:YES]; 但是,是否可以弹出n-2或n-3视图,而不是上一个视图?是的,但必须以不同的方式进行,首先从导航控制器获取当前的ViewController堆栈: NSMutableArray *viewControllers = [self.navigationController.viewControllers mut

我知道,通过以下操作可以轻松弹出到上一个
viewController

[self.navigationController popViewControllerAnimated:YES];

但是,是否可以弹出n-2或n-3视图,而不是上一个视图?

是的,但必须以不同的方式进行,首先从导航控制器获取当前的ViewController堆栈:

NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
[self.navigationController setViewControllers:viewControllers animated:YES];
在代码中,您可以看到我已使数组可变,现在您可以操纵数组:

NSRange range = NSMakeRange(2, 2);
[viewControllers removeObjectsInRange:range];
在这里,我从位置2删除了2个视图控制器,当然还有更多的方法可以从阵列中删除/添加控制器

然后将新数组分配给navigationController:

NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
[self.navigationController setViewControllers:viewControllers animated:YES];

您可以通过[self.navigationController popToViewController:yourViewController动画:是];