2013-03-13 3 views
1

Я создаю свой TabBarController программно, потому что я хочу, чтобы один и тот же контроллер на каждой вкладке отображал различный контент. Содержимое выбирается ID. Я использую идентификатор раскадровки так же, как и использовать initWithNibName:.UITabBarController - еще кнопка не отображается

Я делаю это в 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 показывает только 5 из 7 вкладок. Это прекрасно, потому что одновременно можно отображать только 5 вкладок. К сожалению ... Кнопка еще не видна. Таким образом, последние 2 вкладки недоступны.

У кого-нибудь есть идея, как заставить кнопку «Дополнительно» появляться или почему она не появляется?

С уважением!

ответ

1

Это не появляется, потому что вы добавляете viewcontrollers к контроллеру панели вкладок с использованием метода 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]; 
+0

Эй, спасибо, что отлично поработали ;-) – rcpfuchs

0

Ниже простой пример Как вы можете использовать UITabBarController

Firsts Создать все объект UIViewController и UINavigationController в AppDelegate.h файл и использовать следующий метод 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]; 
    [email protected]"First View"; 

    self.fView=[[FirstViewController alloc] init]; 
    self.FnavCon=[[UINavigationController alloc] initWithRootViewController:self.fView]; 
    self.FnavCon.navigationBar.tintColor=[UIColor blackColor]; 

    [email protected]"Secound View"; 

    self.sView=[[SecoundViewController alloc] init]; 
    self.SnavCon=[[UINavigationController alloc] initWithRootViewController:self.sView]; 
    self.SnavCon.navigationBar.tintColor=[UIColor blackColor]; 
    [email protected]"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; 
} 
Смежные вопросы