Iphone 要使用popViewControllerAnimated而不是popToRootViewControllerAnimated吗

Iphone 要使用popViewControllerAnimated而不是popToRootViewControllerAnimated吗,iphone,cocoa-touch,ipad,ios,Iphone,Cocoa Touch,Ipad,Ios,我想使用popViewControllerAnimated而不是popToRootViewControllerAnimated来移动到根视图。我不想直接移动到根视图。那么有什么方法可以通过弹出所有以前的视图来移动到根视图呢?据我所知,没有直接的方法可以这样做 当然,您可以从调用-[UINavigationController-popViewControllerAnimated:的UINavigationControllerDelegate构建类似的东西,只要您没有到达堆栈的根,但这取决于堆栈增长

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

据我所知,没有直接的方法可以这样做

当然,您可以从调用
-[UINavigationController-popViewControllerAnimated:
UINavigationControllerDelegate
构建类似的东西,只要您没有到达堆栈的根,但这取决于堆栈增长的深度以及您希望实现此行为的频率,如果不打扰用户,这可能会造成很大的干扰。
也就是说,当你一个接一个地弹出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];
    }
}

据我所知,没有一种直接的方法可以做到这一点

当然,您可以从调用
-[UINavigationController-popViewControllerAnimated:
UINavigationControllerDelegate
构建类似的东西,只要您没有到达堆栈的根,但这取决于堆栈增长的深度以及您希望实现此行为的频率,如果不打扰用户,这可能会造成很大的干扰。
也就是说,当你一个接一个地弹出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];
    }
}

你能举例说明我吗?