想使用 popViewControllerAnimated 而不是 popToRootViewControllerAnimated

Posted

技术标签:

【中文标题】想使用 popViewControllerAnimated 而不是 popToRootViewControllerAnimated【英文标题】:want to use popViewControllerAnimated instead of popToRootViewControllerAnimated 【发布时间】:2010-09-07 09:48:02 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

你当然可以从调用-[UINavigationController popViewControllerAnimated:]UINavigationControllerDelegate 构建类似的东西,只要你没有到达堆栈的根,但这取决于你的堆栈增长的深度和你想要的频率如果您有这种行为,这可能会非常干扰您的用户。 IE。他们什么也做不了,只能坐着看着视图飞过,而你一个又一个地弹出 NavigationController...

编辑: 抱歉回复晚了! 所述委托协议定义了一个名为- navigationController:didShowViewController:animated: 的方法。如果您在具有属性的类中实现该协议,例如,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];
    

【讨论】:

你能举例解释一下吗?

以上是关于想使用 popViewControllerAnimated 而不是 popToRootViewControllerAnimated的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 popViewControllerAnimated(true) 导航出 UITableView 时修复 UISearchController 的警告

performSegueWithIdentifier 和 popViewControllerAnimated 破屏导航

导航控制器 popViewControllerAnimated :是的没有按预期工作

PopViewControllerAnimated:YES 当点击 UIAlertView 使键盘出现在 parentVC

popViewControllerAnimated 改变 UINavigationBar 的 UIColor

UIAlertView 不应调用 popViewControllerAnimated