在标签栏控制器中访问多个导航控制器

Posted

技术标签:

【中文标题】在标签栏控制器中访问多个导航控制器【英文标题】:accessing multiple navigation controllers in a tab bar controller 【发布时间】:2014-05-12 14:40:07 【问题描述】:

我有一个导航栏控制器,我嵌入了一个标签栏控制器。然后,我将另外两个导航栏控制器放到故事板上,并创建了从标签栏控制器到两个新导航栏控制器的推送序列,所以我希望下面的日志语句为 3,用于标签栏控制器上的视图控制器的数量但是,它记录了 1。下面的最后一行代码显然也抛出了越界错误,因为没有 objectAtIndex:1 。你可以解释吗?为什么我在情节提要中创建的第二个和第三个导航栏控制器没有出现在标签栏控制器的 viewControllers 属性中?

UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
NSLog(@"tbc %lu", (unsigned long)[[tbc viewControllers] count]);
UINavigationController *nav = (UINavigationController *)[[tbc viewControllers] objectAtIndex:0];
UINavigationController *nav2 = (UINavigationController *)[[tbc viewControllers] objectAtIndex:1];

【问题讨论】:

有什么问题? @A-Live 很抱歉,如果不清楚,我更新了 OP Ehm,只要你的应用中有UITabBarController,must 就是根视图控制器。好的,我现在看到问题了,为什么不使用UITabBarControllerviewControllers 属性? @A-Live 好的,谢谢,但是你能看看 OP 的更新吗?我添加了另外两个导航栏控制器,并将它们与推送 segues 连接到选项卡栏控制器,但选项卡栏控制器上 viewControllers 属性的计数仅为1,用于我放在故事板上的第一个导航栏控制器(我嵌入在标签栏控制器中)。 【参考方案1】:

问题在于,当我将标签栏控制器连接到情节提要中的第二个和第三个导航控制器时,我创建了一个“推送”segue。但是,它必须是标签栏控制器和它所连接的任何视图控制器之间的“关系”segue。

【讨论】:

以上是关于在标签栏控制器中访问多个导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

组合标签栏和导航栏控制器出现问题

在导航到另一个视图控制器之前切换标签栏

如何让所有导航控制器在标签栏中扎根?

可以在标签栏控制器中隐藏导航栏吗?

想在标签栏视图控制器中添加一个简单的导航栏

标签栏控制器中的导航控制器