UINavigationController - 检测何时导航回根视图控制器

Posted

技术标签:

【中文标题】UINavigationController - 检测何时导航回根视图控制器【英文标题】:UINavigationController - detect when navigated back to root view controller 【发布时间】:2015-01-12 18:20:27 【问题描述】:

我正在尝试通过使用委托方法来做到这一点

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

但是我如何确定viewController 是否是根视图控制器?好像topViewController只有一个方法,不是我想要的。

或者有没有更好的方法来确定我何时通过按后退按钮导航回导航控制器的根目录?

【问题讨论】:

【参考方案1】:

检查viewController 是否与导航堆栈中的第一个视图控制器相同:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
    UIViewController *root = navigationController.viewControllers[0];

    if (viewController == root) 
        // moving to the root controller
    

【讨论】:

以上是关于UINavigationController - 检测何时导航回根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr

从一个 UINavigationController 到另一个 UINavigationController (Swift iOS 9, xcode 7)

UINavigationController