我有3个viewControllers A,B和C.
我在vcA上,我使用
推送vcB[self.navigationController pushViewController:vcB animated:YES];
当vcB可见时,我推vcC。
现在我在vcC内部并想同时删除(或弹出)vcC和vcB并直接转到vcA。我不想去vcB。我该怎么做?
是否可以在显示vcC时静默地从堆栈中删除vcB?
感谢
答案 0 :(得分:2)
我认为你可以将它们作为数组混乱
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
[viewControllers removeObjectIdenticalTo: removedViewController];
navigationController.viewControllers = viewControllers;
答案 1 :(得分:2)
你试过了吗?
[self.navigationController popToRootViewControllerAnimated:YES];
答案 2 :(得分:2)
如果您知道A
始终是您推送的第一个控制器,那么您应该可以这样做:
[self.navigationController popToRootViewControllerAnimated:YES]
或者如果在A
之前堆栈上可能还有其他控制器,您可以执行以下操作:
[self.navigationController popToViewController:viewControllerA animated:YES]
答案 3 :(得分:0)
您可以在-popToRootViewControllerAnimated:
...
UINavigationController
[self.navigationController popToRootViewControllerAnimated:YES];
答案 4 :(得分:0)
如果A是root,则为popToRootViewController。
如果没有,假设您遵守Apple对未记录的API使用的限制,我建议不,你不能从C列表中弹出C ans B.
对视图堆栈的任何直接操作都是hackish,并导致许多潜在的问题
你最好的选择是从C设置一个全局标志,弹出它,并在B的viewWillAppear(将出现,出现非DID),你检查所述标志的状态,如果设置,立即弹出到A.
视图B不会出现,最坏的情况是在C和A之间会产生一个小的,可能难以察觉的延迟。