UITabBarController Не показывает имя tabbarItems - PullRequest
0 голосов
/ 26 октября 2011

Я создаю приложение на основе UTabbarController. Я создал эту панель вкладок программно. Все работает нормально, за исключением того, что я не вижу заголовок tabBatItem. Я все правильно инициализировал, но когда приложение запускается, я вижу только заголовок первой вкладки. но если я выберу 2-й tabbaritem или около того, я могу видеть их имена. Я не знаю, что здесь происходит не так. Вот мой код Пожалуйста, дайте мне знать, если я допустил ошибку.

Спасибо.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    HomeViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
UINavigationController*navController1=[[UINavigationController alloc]initWithRootViewController:viewController1];
navController1.title=@"Home";
[viewController1 release];

TrainerTableViewController *viewController2 = [[TrainerTableViewController alloc] initWithNibName:@"TrainerTableViewController" bundle:nil];
UINavigationController*navController2=[[UINavigationController alloc]initWithRootViewController:viewController2];
navController1.title=@"Trainer";
[viewController2 release];

SettingsTableViewController *viewController8 = [[[SettingsTableViewController alloc] initWithNibName:@"SettingsTableViewController" bundle:nil] autorelease];
UINavigationController*navController8=[[[UINavigationController alloc]initWithRootViewController:viewController8]autorelease];
navController1.title=@"Settings";

AboutUsViewController *viewController9 = [[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil] autorelease];
UINavigationController*navController9=[[[UINavigationController alloc]initWithRootViewController:viewController9]autorelease];
navController1.title=@"About Us";


self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, navController2,navController8, navController9, nil];

[navController1 release];
[navController2 release];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}

Ответы [ 4 ]

3 голосов
/ 26 октября 2011

Это можно сделать, включив приведенный ниже код в файл .m контроллера представления для каждого элемента панели вкладок. Код также включает в себя, как изменить изображение на панели вкладок.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
        self.title = @"Apply Now";
        self.tabBarItem.image = [UIImage imageNamed:@"tbApplyNow.png"];
    }
    return self;
}
2 голосов
/ 20 января 2012

Лучший способ решить эту проблему - установить заголовок viewController, а не навигационного контроллера

viewController1.tabBarItem.title = @"CohesiveSelf";

Сделайте это для всех вкладок.

0 голосов
/ 26 октября 2011

Вы фактически устанавливаете заголовок для NavigationControllers.Кроме того, обратите внимание, что ваш код устанавливает заголовок navController1 несколько раз, а не устанавливает его для других.

Вы можете установить заголовки для панели вкладок, настроив tabBarItem s для каждого контроллера.

У вас есть возможность создать подкласс или просто включить его в метод application:didFinishLaunchingWithOptions: в вашем AppDelegate.

Вот пример:

UITabBarItem *tbi1 = [navController1 tabBarItem];
[tbi1 setTitle:@"Home"];

UIImage *i1 = [UIImage imageNamed:@"hometabicon.png"];
[tbi1 setImage:i1];

Это установит заголовок tab1в «Домой» и установит значок tabBar в файл с именем «hometabicon.png».

Вы можете повторить один и тот же шаблон для каждой из других вкладок.

0 голосов
/ 26 октября 2011

Вы устанавливаете заголовок только для navController1.Для каждого создаваемого вами nab-контроллера вам нужно установить заголовок для него.

Попробуйте:

CHANGE: navController1.title = @ "Trainer";TO navController2.title = @ "Trainer";

CHANGE: navController1.title = @ "Settings";TO navController8.title = @ "Настройки";

ИЗМЕНИТЬ: navController1.title = @ "О нас";TO navController9.title = @ "About Us";

Также вы не выпускаете navController8 или 9, что приведет к утечке памяти

...