我知道很容易跳到前一个viewController
:
[self.navigationController popViewControllerAnimated:YES];
但是,是否可以弹出,而不是前一个视图,而是 n - 2 或 n - 3 视图?
是的,但必须以不同的方式完成,首先从导航控制器中获取当前的视图控制器堆栈:
NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
在您看到的代码中,我使数组可变,现在您可以操作数组:
NSRange range = NSMakeRange(2, 2);
[viewControllers removeObjectsInRange:range];
在这里,我从位置 2 中删除了 2 个视图控制器,当然还有更多方法可以从数组中删除/添加控制器。
然后只需将新数组分配给navigationController:
[self.navigationController setViewControllers:viewControllers animated:YES];