Почему не отображаются названия UITabBarItems? - PullRequest
1 голос
/ 01 сентября 2011

Первый раз постер. Заранее спасибо.

Я хочу использовать UITabBar в своем приложении для iPhone. Меня убедили, что я не могу использовать UITabViewController, потому что я бы вложил его в UINavigationController. Я читал, что вы можете сделать это, но вы должны использовать UITabBar вместо полноценного контроллера. Я могу заставить это работать с Интерфейсным Разработчиком, но у меня есть много избыточных XIB, и я все равно предпочел бы сделать это в коде. Я хочу знать, как работает магия.

Вот .m моего контроллера:

#import "DumbViewController.h"

@implementation DumbViewController

-(void) loadView {
    UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 150, 30)];
    [label setText:@"hello world"];
    [view addSubview:label];
    [label release];

    UITabBar *tb = [[UITabBar alloc] initWithFrame:CGRectMake(0, [view frame].size.height - 64, [view frame].size.width, 64)];
    [tb setDelegate:self];
    [tb setItems:[NSArray arrayWithObject:[[[UITabBarItem alloc] initWithTitle:@"bob" image:[UIImage imageNamed:@"21-skull.png"] tag:0] autorelease]]];
    [view addSubview:tb];
    [tb release];

    [self setView:view];
    [view release];
}

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    NSLog(@"selected item %@", item);
}

@end

Когда я запускаю приложение, я получаю метку и панель вкладок внизу. Я получаю тупой маленький значок черепа, но «Боб» никогда не отображается Щелчок черепа работает, как и следовало ожидать.

Почему этот заголовок не отображается?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Проблема заключалась в том, что я устанавливал рамку UITabBar вне рамки родительского представления.

Я добавил эту строку после строки выделения UITabBar.

[tb setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin];

Преимущество здесь в том, что даже если я поворачиваюсь или приложение работает на iPad, панель вкладок остается в нижней части экрана.

Я также изменил с высоты в 64 пикселя до высоты в 44 пикселя, потому что это намного больше похоже на то, как XIB делал изначально.

0 голосов
/ 01 сентября 2011

Попробуйте следующий код ....

    UITabBarItem *someTabBarItem = [[UITabBarItem alloc] initWithTitle:@"bob" image:[UIImage imageNamed:@"21-skull.png"] tag:0];
    NSArray *tabBarItems = [[NSArray alloc] initWithObjects:someTabBarItem,nil];
    [tabBar setItems:tabBarItems animated:NO];
    [tabBar setSelectedItem:someTabBarItem];
    [tabBarItems release];
    [someTabBarItem release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...