UINavigationController:导航混乱

时间:2011-10-20 06:46:41

标签: iphone objective-c uinavigationcontroller

我对推送导航控制器和流行导航控制器感到困惑。例如:

我有5个视图控制器A,B,C,D,E。我通过A的推送导航到达E控制器。现在,在完成某项任务后,我需要直接导航到C控制器。我知道我可以使用下面的方法来做到这一点。

[self.navigationController popToViewController: animated:];

但我想知道D控制器怎么样?它会在堆栈中还是从堆栈中删除? 如果D将在堆栈中,那么如何从堆栈中删除它?

3 个答案:

答案 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中的其余视图将从堆栈中删除