当使用PushViewController时,选项卡不显示

我试图使用下面的代码来显示一个tabbarcontroller

UITabBarController *tc = [[self storyboard] instantiateViewControllerWithIdentifier:@"tabbarcontroller"]; [self.navigationController pushViewController:tc animated:YES]; 

它确实加载了视图,我可以告诉它我希望它默认使用哪个选项卡。 问题是标签不显示。 从我读过的东西我收集它有关于把选项卡控制器内的导航控制器,但我找不到任何解决scheme。

如果使用Storyboard,使用pushViewController方法是一个不错的select(如果它工作的话)。 你必须插入一个“ segue ”。 进入故事板, 同时按下ctrlbutton,单击主控制器 (必须打开tabViewController) ,然后释放单击 tabBarController。

现在你有了赛格。 点击出现的圆圈 ,然后为这个segueselect一个标识符,例如: MainToTab

在这里输入图像说明

现在在你的方法中,你只需要调用:

 [self performSegueWithIdentifier:@"MainToTab" sender:self]; 

而且,如果你想pipe理目标控制器上的属性(通过segue),你可以实现这个方法:

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"MainToTab"]) { UITabViewController *tb = (UITabViewController *)segue.destinationViewController; //set the properties... } } 

启动前一个方法时会自动调用此方法。

你想在你的UITabBarController里面是UIViewControllers ,可能在UINavigationController里面。

你不应该推一个UITabBarController 。 你可以在这里看到苹果的解释:

使用标签栏控制器的应用程序也可以在一个或多个标签中使用导航控制器。 将这两种types的视图控制器组合在同一个用户界面中时,标签栏控制器始终充当导航控制器的包装。

使用标签栏控制器最常用的方法是将其视图embedded到应用程序的主窗口中。 (……)

你仍然可以模式地展示它:

这是可能的(虽然不常见)在您的应用程序中以模态方式呈现标签栏控制器。 标签栏界面通常安装在您的应用程序的主窗口中,并根据需要进行更新。 但是,如果您的界面devise看起来像是保证的话,您可以以模态方式呈现标签栏控制器。 例如,要从应用程序的主要操作模式切换到使用标签栏界面的完全不同的模式,可以使用交叉渐变过渡以模态方式显示辅助标签栏控制器。