【问题标题】:Tab bar is hidden in iOS标签栏隐藏在 iOS 中
【发布时间】:2018-04-03 14:07:48
【问题描述】:

我有一个带有四个标签的标签栏控制器。对于一个选项卡,我创建了一个带有导航视图控制器和简单 UIViewController 的新故事板。对于其他选项卡,在同一情节提要中将视图控制器与导航控制器连接起来。

当我尝试从第一个选项卡的新故事板启动第一个视图控制器时,它没有显示选项卡栏。对于其他人,它正在正确显示标签栏。

 -(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    NSInteger index = [tabBar.items indexOfObject:item];
    if(index == 0){
        UIViewController *suggestionsViewCintroller = (UIViewController *)[[UIStoryboard storyboardWithName:@"suggestions_view" bundle:nil] instantiateViewControllerWithIdentifier:@"suggestions_view_controller"];
        [self addChildViewController:suggestionsViewCintroller];
        [self.view addSubview:suggestionsViewCintroller.view];

        suggestionsViewCintroller.hidesBottomBarWhenPushed = NO;
        [suggestionsViewCintroller didMoveToParentViewController:self];
    }
}

故事板中的导航控制器配置:

视图控制器和标签栏控制器位于不同的故事板中。

为什么不显示标签栏?

【问题讨论】:

  • 您是否尝试过使用情节提要参考?你真的不应该为标签栏项目手动添加子视图控制器。
  • 视图控制器和标签栏控制器在不同的故事板中
  • 是的,但是使用 Storyboard References,您应该能够将第二个 Storyboard 设置为选项卡栏控制器中选项卡的视图控制器。
  • 你能分享你的解决方案吗?我不知道
  • 这篇文章更深入:code.tutsplus.com/tutorials/… 但简单来说,在定义标签栏视图控制器的情节提要中,从对象库中拖动一个新的“情节提要参考”项并将其设置为标签栏控制器中的视图控制器。

标签: ios objective-c uinavigationcontroller uitabbar


【解决方案1】:

我认为这不是将视图控制器添加到标签栏的正确方法。我认为您想对您的 UITabBarController 进行子类化,并将新的视图控制器添加到子类的 viewDidLoad 方法中的 UITabBarController 子类中。您可以查看此here 的示例。主要代码添加在TabBarController(UITabBarController的子类)中

- (void)viewDidLoad {
    [super viewDidLoad];

    UINavigationController* naviController = [[UIStoryboard storyboardWithName:@"Other" bundle:nil]
                                           instantiateViewControllerWithIdentifier:@"NavigationController"];
    naviController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Suggestions"
                                                          image:[UIImage imageNamed:@"suggestions"] tag:2];
    self.viewControllers = [self.viewControllers arrayByAddingObject:naviController];
}

编辑了示例以使用 2 个不同的故事板。

主故事板:

其他故事板:

视频here.

【讨论】:

    【解决方案2】:

    调用 'addChildViewController' 您不会在 UITabBarController 中添加选项卡。 此调用只是在 UITabBarController 的整个视图上添加子视图控制器。所以看不到tabbar是合理的。

    如果您希望将视图控制器添加为 UITabBarController 的 TAB,您应该使用 'viewControllers' 属性,如下所示: https://stackoverflow.com/a/11399634/4322841

    也许应该使用“selectedIndex”属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2018-02-24
      • 1970-01-01
      • 2022-11-12
      • 2015-04-30
      • 1970-01-01
      • 2019-02-15
      相关资源
      最近更新 更多