为啥 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 中,为啥?