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