2009-08-25 4 views
2

Я добавляю viewController в TabBarController. Когда я добавляю ViewController из пользовательского класса и Nib, значок его не отображается в tabBar.Добавление значка контроллера табло IPhone

Если я инициализирую это, значок не отображается.

viewController = [[FlashCardViewController alloc] initWithNibName:@"FlashCardViewController" bundle:[NSBundle mainBundle]]; 

Но создание универсального видаController работает.

viewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 

Здесь мы добавляем изображение и заголовок.

viewController.title = @"Quiz"; 
viewController.tabBarItem.image = [UIImage imageNamed:@"magnifying-glass.png"]; 

Как получить значок, отображаемый при загрузке из NIB?

ответ

1

Вы можете добавить вызов к tabBarItem.image сеттер внутри viewDidLoad метода пользовательского контроллера вида:

@implementation FlashCardViewController 
//... 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tabBarItem.image = [UIImage imageNamed:@"magnifying-glass.png"]; 
} 
//... 
@end

Edit: ОК, так что не работает. Попробуйте:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImage *image = [UIImage imageNamed:@"magnifying-glass.png"]; 
    self.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"string" 
                image:image 
                 tag:0] autorelease]; 
}
+0

Я точно думал, что ваше предложение будет работать, но все равно нет значка. Любые другие идеи Тима? – Bryan

+0

Возможно, инициализируйте весь элемент панели вкладок самостоятельно? См. Отредактированный код выше. – Tim

+0

Спасибо. Я переписывал изображение и название в другом месте. Это действительно работает! Только одна проблема заключается в том, что пока вы не нажмете на вкладку, чтобы загрузить представление, tabBarItem не имеет значка или метки. Есть идеи? – Bryan

0

Почему вы переходящая в [NSBundle mainbundle] в FlashCardViewController инициализации? Обычно вы просто переходите в нуль - согласно вашему рабочему примеру ...

+0

Я думал, что это может быть проблемой, и я переключил его на ноль, но не было никакой разницы, поэтому я придерживался того, что у меня было до этого. Я загружал FlashCardViewController сам по себе, а не в TabBarController, и он отлично работал. Я не уверен, почему я передаю mainbubdle NSBundle. Что это значит? – Bryan