标签栏隐藏在 iOS

Tab bar is hidden in iOS

我有一个带有四个选项卡的选项卡栏控制器。对于一个选项卡,我创建了一个带有导航视图控制器和简单 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];
    }
}

情节提要中的导航控制器配置:

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

为什么视图中没有显示标签栏?

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

如果您希望将视图控制器添加为 UITabBarController 的 TAB,您应该使用 'viewControllers' 属性,如下所示:

也许应该使用 'selectedIndex' 属性.

我认为这不是将视图控制器添加到选项卡栏的正确方法。我想你想 sub class 你的 UITabBarController 并在 sub class 的 viewDidLoad 方法中将新的视图控制器添加到 UITabBarController sub class。您可以查看此 here 的示例。主要代码添加在TabBarController(UITabBarController的子class)

- (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.