我想使用popViewControllerAnimated而不是popToRootViewControllerAnimated来移动到根视图。我不想直接移动到根视图。那么是否有任何方法可以通过弹出以前的所有视图来移动到根视图?
答案 0 :(得分:3)
据我所知,没有直接的方法可以这样做。
当然,只要您没有到达堆栈的根目录,就可以在UINavigationControllerDelegate
之外构建类似于-[UINavigationController popViewControllerAnimated:]
的内容,但这取决于您的堆栈增长的深度以及如何通常你想要有这种行为,如果不是你的用户烦恼,这可能是非常中断。
即当你弹出一个又一个的NavigationController时,他们无法做任何事情,只能坐下来观看视图......
修改强>
对不起,迟到的回复!
所述委托协议定义了名为- navigationController:didShowViewController:animated:
的方法。如果您在属性为-say - shouldPopToRoot
的类中实现该协议,则可以在触发弹出的操作中将其设置为YES。
然后,所述方法可以沿着
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ( self.shouldPopToRoot )
{
// Since this method gets called WHENEVER you pop a view-controller, you need
// to ensure that you stop popping if you've just shown the root-view-controller
if ( [navigationController.viewControllers itemAtIndex:0] == viewController )
self.shouldPopToRoot = NO;
else
[navigationController popViewControllerAnimated:YES];
}
}