选项卡不会以编程方式切换导航控制器内的 tabBar

Posted

技术标签:

【中文标题】选项卡不会以编程方式切换导航控制器内的 tabBar【英文标题】:tab does not switch programmatically for a tabBar inside a navigation controller 【发布时间】:2014-05-25 01:34:37 【问题描述】:

我的应用程序从打开 UIViewController 的导航控制器开始。此屏幕用作登录页面。

登录时,我像这样打开一个 UITabBarController:

  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
    UITabBarController *obj=[storyboard instantiateViewControllerWithIdentifier:@"MainTab"];
    self.navigationController.navigationBarHidden=YES;
    [self.navigationController pushViewController:obj animated:YES];

在我的标签栏控制器中,我希望在单击按钮时以编程方式切换标签。我尝试了以下 3 个,但都没有工作。代码放置在方法中,单击按钮时调用该方法。

对于前 2 个,选项卡没有更改 - 我的初始选项卡仍然突出显示,并且未显示正确的视图控制器。对于最后一个,应用程序崩溃。

第一:

  self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];

第二个:

[self.parentViewController.tabBarController setSelectedIndex:1];

第三:

UITabBarController *MyTabController = (UITabBarController *)((AppDelegate*) [[UIApplication sharedApplication] delegate]).window.rootViewController;
[MyTabController setSelectedIndex:1];

我错过了什么?

【问题讨论】:

【参考方案1】:

对于导航控制器内的 tabBar...我错过了什么?

您缺少的一件事是视图控制器允许使用的order of containment。具体来说,您可以将导航控制器放在选项卡控制器中,但不能反过来。

【讨论】:

以上是关于选项卡不会以编程方式切换导航控制器内的 tabBar的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从模态视图控制器切换父选项卡

以编程方式切换选项卡时清除根视图控制器的变量

在启动时以编程方式为 5 个选项卡栏项目设置选项卡栏标题,其中 4 个嵌入在导航控制器中,1 个没有。目标 C

以编程方式更改 TabViewController 中的选定选项卡

以编程方式将选项卡栏控制器添加到当前 App Flow

寻找嵌入了选项卡和导航控制器的视图控制器