为啥 UINavigationController 没有 rootViewController 属性?

Posted

技术标签:

【中文标题】为啥 UINavigationController 没有 rootViewController 属性?【英文标题】:Why doesn't UINavigationController have a rootViewController property?为什么 UINavigationController 没有 rootViewController 属性? 【发布时间】:2013-04-11 01:21:21 【问题描述】:

我很好奇。我们真的不能轻易访问它。我的意思是,我知道它有,但无法访问。

为什么?

基本上,我希望在通过访问它的视图发送一些事件之前加载 rootViewController。在 viewDidload 上设置了一个 postnotification。

【问题讨论】:

【参考方案1】:

如果你有多个,那么使用:

UIViewController *root = navController.viewControllers[0];

navController 是你UINavigationController。这将永远有效。

使用UINavigationController topViewController。如果只有一个控制器,则此方法有效。

【讨论】:

@HugoDozois 喜欢什么? OP 声明没有 rootViewController 方法可以在 nab 控制器中获取根视图控制器。使用topViewController 将为您提供根视图控制器(如果只有一个视图控制器)。 topViewController 将给出最上层的控制器。我想要最底层的。 我就是这么做的。它仍然没有解释为什么我们没有 rootViewController。除非其他人有更好的答案,否则这将是正确的答案 因为您不需要经常使用 rootViewController,而您需要使用 topViewController。如果你真的想要,你可以在 UINavigationController 上创建一个带有 rootViewController 属性的类别,该属性只返回 self.viewControllers[0]...

以上是关于为啥 UINavigationController 没有 rootViewController 属性?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UINavigationController 在容器视图中具有意外的大小?

为啥嵌入 UINavigationController 时不再显示 UITableView

为啥在 UINavigationController 上关闭 UIAlertController 调用关闭?

为啥我们将 UIViewController 传递给 UINavigationController 类?

为啥我不应该修改 UINavigationController 的工具栏?

UIView 只嵌入在 UINavigationController 和 UITabBarController 中,为啥?