UITabBarController – 更多button不显示

我以编程方式创build我的TabBarController ,因为我想在每个选项卡中显示不同的内容相同的控制器。 内容由一个ID获取。 我使用的故事板ID与使用initWithNibName:相同的方式。

我在AppDelegate中这样做:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; UITabBarController *tabBarController = [[UITabBarController alloc] init]; for (int i = 0; i < 7; i++) { MyViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"MyView"]; [svc setID: i]; [tabBarController addChildViewController:svc]; } [self.window makeKeyAndVisible]; [self.window setRootViewController: tabBarController]; return YES; } 

但TabBar只显示了7个Tab中的5个。 这很好,因为只有5个选项卡可以同时显示。 不幸的是…更多的button是不可见的。 所以最后2个标签是不可访问的。

有没有人有一个想法如何强制更多button显示,或者为什么它不显示?

问候!

它没有显示出来,因为你正在使用addChildViewController方法(这是一个UIViewController方法而不是一个标签栏控制器方法)添加视图控制器到标签栏控制器。 所以我认为发生了什么事是标签栏控制器不知道它有超过5个视图控制器。

如果你想要显示更多的视图控制器,直接设置标签栏控制器的viewControllers数组。 修改你的代码如下所示:

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UITabBarController *tabBarController = [[UITabBarController alloc] init]; NSMutableArray *vcArray = [NSMutableArray array]; for (int i = 0; i < 7; i++) { ViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"MyView"]; [svc setID: i]; [vcArray addObject:svc]; } [tabBarController setViewControllers:vcArray]; //This is the important part. [self.window setRootViewController: tabBarController]; [self.window makeKeyAndVisible]; 

以下是如何使用UITabBarController简单示例

首先在AppDelegate.h文件中创buildUIViewControllerUINavigationController所有对象,并使用AppDelegate.m以下方法

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds ]]; self.viewCon=[[ViewController alloc] init]; self.navCon=[[UINavigationController alloc] initWithRootViewController:self.viewCon]; self.navCon.navigationBar.tintColor=[UIColor blackColor]; self.viewCon.title=@"First View"; self.fView=[[FirstViewController alloc] init]; self.FnavCon=[[UINavigationController alloc] initWithRootViewController:self.fView]; self.FnavCon.navigationBar.tintColor=[UIColor blackColor]; self.fView.title=@"Secound View"; self.sView=[[SecoundViewController alloc] init]; self.SnavCon=[[UINavigationController alloc] initWithRootViewController:self.sView]; self.SnavCon.navigationBar.tintColor=[UIColor blackColor]; self.sView.title=@"Third View"; . . // create UIViewController and UINavigationController As you need . . . UIImage *img1=[UIImage imageNamed:@"Australia.gif"]; self.tbItem1=[[UITabBarItem alloc] initWithTitle:@"First Page" image:img1 tag:1]; self.viewCon.tabBarItem=self.tbItem1; UIImage *img2=[UIImage imageNamed:@"Cameroon.gif"]; self.tbItem2=[[UITabBarItem alloc] initWithTitle:@"Secound Page" image:img2 tag:2]; self.fView.tabBarItem=self.tbItem2; UIImage *img3=[UIImage imageNamed:@"Canada.png"]; self.tbItem3=[[UITabBarItem alloc] initWithTitle:@"Third Page" image:img3 tag:3]; self.sView.tabBarItem=self.tbItem3; NSMutableArray *viewArr=[[NSMutableArray alloc] init]; [viewArr addObject:self.navCon]; [viewArr addObject:self.FnavCon]; [viewArr addObject:self.SnavCon]; self.tbCon=[[UITabBarController alloc] init]; self.tbCon.viewControllers=viewArr; [self.window addSubview:tbCon.view]; [self.window makeKeyAndVisible]; return YES; }