想要使用popViewControllerAnimated而不是popToRootViewControllerAnimated

时间:2010-09-07 09:48:03

标签: iphone cocoa-touch ipad ios

我想使用popViewControllerAnimated而不是popToRootViewControllerAnimated来移动到根视图。我不想直接移动到根视图。那么是否有任何方法可以通过弹出以前的所有视图来移动到根视图?

1 个答案:

答案 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];
    }
}