1

我正在尝试使用以下代码来显示 tabbarcontroller

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

它确实加载了视图,我可以告诉它我希望它默认到哪个选项卡。问题是标签不显示。从我读过的内容来看,我认为这与将选项卡控制器放在导航控制器内有关,但我找不到任何解决方案。

4

2 回答 2

1

你想要的东西在你UITabBarController的里面UIViewControllers,可能在一个里面UINavigationController

您也不应该推动UITabBarController. 你可以在这里看到苹果的解释:

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

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

您仍然可以模态地呈现它:

可以(尽管不常见)在您的应用程序中以模态方式呈现标签栏控制器。标签栏界面通常安装在应用程序的主窗口中,并且仅在需要时更新。但是,如果您的界面设计似乎需要,您可以模态显示一个标签栏控制器。例如,要从应用程序的主要操作模式切换到使用标签栏界面的完全不同的模式,您可以使用交叉淡入淡出过渡以模态方式呈现辅助标签栏控制器。

于 2013-10-23T21:45:50.440 回答
1

如果你使用 Storyboard,使用 pushViewController 方法是一个不好的选择(如果它有效)。你必须插入一个“ segue ”。进入情节提要并按下 ctrl 按钮,单击主控制器(必须打开 tabViewController),然后释放对 tabBarController 的单击

现在你有了转场。单击出现的圆圈并为此 segue 选择一个标识符,例如:MainToTab

在此处输入图像描述

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

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

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

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

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

}

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

于 2013-10-23T21:48:18.137 回答