我对推送导航控制器和流行导航控制器感到困惑。例如:
我有5个视图控制器A,B,C,D,E。我通过A的推送导航到达E控制器。现在,在完成某项任务后,我需要直接导航到C控制器。我知道我可以使用下面的方法来做到这一点。
[self.navigationController popToViewController: animated:];
但我想知道D控制器怎么样?它会在堆栈中还是从堆栈中删除? 如果D将在堆栈中,那么如何从堆栈中删除它?
答案 0 :(得分:3)
调用方法时
popToViewController:C animated:YES
弹出所有直到C的视图。
就像调用popViewControllerAnimated:2次(当你在E时)。
如果你想跟进进度,你可以在viewDidUnload / Dealloc(没有ARC)中放置一些NSLog。
答案 1 :(得分:1)
如果你没有将控制器D推到堆栈上,它就不在堆栈上。
如果您确实将控制器D推入堆栈,然后在它之前弹出控制器,它也会弹出,因此不再存在于堆栈中。如果情况不是这样,使用 UINavigationController 会有点毫无意义。
答案 2 :(得分:1)
使用此
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES]
viewControllers是一个数组,用于保存导航控制器播种中的视图,如果你想要在堆栈中使用上面的命令,只需要nf 2的C视图, 使用此命令,C中的其余视图将从堆栈中删除