使用PushViewController时不显示选项卡

时间:2013-10-23 21:30:24

标签: ios uitabbarcontroller pushviewcontroller uitabview

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

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

它确实加载了视图,我可以告诉它我希望它默认的哪个选项卡。问题是标签没有显示。根据我的阅读,我收集它与将标签控制器放在导航控制器内部有关,但我找不到任何解决方案。

2 个答案:

答案 0 :(得分:1)

UITabBarController内的UIViewControllers内容UINavigationController,可能位于UITabBarController内。

你不应该推{{1}}。你可以看到Apple的解释here

  

使用标签栏控制器的应用也可以使用导航   一个或多个选项卡中的控制器。当结合这两种类型时   在同一用户界面中查看控制器,标签栏控制器   始终充当导航控制器的包装器。

     

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

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

  

可能(虽然不常见)提供标签栏控制器   在你的应用程序中模态化。标签栏界面通常安装在您的   应用程序的主窗口,仅在需要时更新。但是,你可以   如果您的界面设计,则以模态方式显示标签栏控制器   似乎值得保证。例如,要从应用的主要内容切换   操作模式到使用标签栏的完全不同的模式   界面,您可以模态呈现辅助标签栏控制器   使用交叉渐变过渡。

答案 1 :(得分:0)

如果你使用Storyboard,使用pushViewController方法是一个糟糕的选择(如果它工作)。您必须插入“ segue ”。 进入故事板并按按钮,单击主控制器(必须打开tabViewController),然后释放tabBarController上的单击

现在你有了segue。点击出现的,然后选择此segue的标识符,例如: MainToTab

enter image description here

现在,在您的方法中,您只需致电:

[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...
    }

}

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