如何导航到嵌入在标签栏控制器中的视图控制器

Posted

技术标签:

【中文标题】如何导航到嵌入在标签栏控制器中的视图控制器【英文标题】:How to navigate to a View Controller embedded in tab bar controller 【发布时间】:2016-06-07 13:42:27 【问题描述】:

我有一个嵌入在navigationController 中的viewControllerA。从这个viewControllerA 我想导航到另一个嵌入在tabBarController 中的viewControllerB。 所以我有一个类似的设置 -

    viewControllerB 被嵌入到 navigationController 中,然后它被嵌入到 tabBarController 中。

    viewControllerA 中,我有一个按钮,我想从该按钮推到viewControllerB

这就是我想要做的 -

-(void)areaBtnClicked:(id)sender
      NSLog(@"btn clicked");
      UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"tabController"];
      [self.navigationController pushViewController:tbc animated:YES];

但是应用程序崩溃并显示错误消息 -

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

【问题讨论】:

嘿,最好有标签栏控制器作为根。并且比将导航控制器作为选项卡。也许您可以考虑重新组织您的控制器流程? @DoN1cK - 类似于登录流程,您可以登录然后导航到嵌入在选项卡中的主控制器。 也许你可以把它们分开?登录完成后,删除所有控制器并将您的标签栏作为根。 检查你有一个标识符 == tabController 的 UITabBarController 是的故事板标识符是正确的 【参考方案1】:

您确定您的控制器具有标识符“tabController”吗? 检查你的故事板。

【讨论】:

【参考方案2】:

显然,从模拟器中删除应用程序解决了问题。

【讨论】:

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

以模态方式将嵌入在导航控制器中的视图控制器与标签栏控制器分开

在标签栏控制器中嵌入导航控制器会更改视图控制器的安全区域

这个标签栏控制器应该嵌入在哪里?

所有标签栏控制器的栏按钮

如何在视图控制器中的标签栏和导航栏上全屏显示弹出视图?

从标签栏控制器跳回导航控制器 - swift 4