为什么UINavigationController没有rootViewController属性?

12

我非常好奇。我们真的不能轻易访问它。我的意思是,我知道它存在,但是不可访问。

为什么?

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

1个回答

18

如果您有多个,那么请使用:

UIViewController *root = navController.viewControllers[0];

其中navController是您的UINavigationController。这将始终有效。

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


@HugoDozois 像什么?OP 表示在 nab 控制器中没有 rootViewController 方法来获取根视图控制器。使用 topViewController 将会给你根视图控制器(如果只有一个视图控制器)。 - rmaddy
topViewController会给出最上面的控制器。我想要最下面的。 - user4951
这就是我所做的。这仍然不能解释为什么我们没有rootViewController。除非有人有更好的答案,否则这将是正确的答案。 - user4951
因为你不经常需要rootViewController,而topViewController则需要。如果你真的想要,你可以在UINavigationController上创建一个类别,其中包含一个rootViewController属性,它只需返回self.viewControllers[0]即可... - Scott Berrevoets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接