Добавление значка контроллера панели вкладок iPhone

#iphone #cocoa-touch #uitabbarcontroller #icons #nib

#iPhone #cocoa-touch #uitabbarcontroller #Значки #кончик

Вопрос:

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

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

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

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

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

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

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

Как я могу заставить значок отображаться при загрузке с кончика?

Ответ №1:

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

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

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

Редактировать: ОК, значит, это не сработало. Попробуйте:

 - (void)viewDidLoad {
    [super viewDidLoad];

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

Комментарии:

1. Я был уверен, что ваше предложение сработает, но значка по-прежнему нет. Есть еще идеи, Тим?

2. Может быть, инициализировать весь элемент панели вкладок самостоятельно? Смотрите отредактированный код выше.

3. Спасибо. Я перезаписывал изображение и заголовок в другом месте. Это действительно работает! Здесь есть только одна проблема: пока вы не нажмете на вкладку, чтобы загрузить представление, элемент TabBarItem не имеет значка или метки. Есть идеи?

4. Переместить код из viewDidLoad в initWithNibName:bundle: ?

Ответ №2:

Почему вы передаете [NSBundle mainbundle] в инициализацию FlashCardViewController? Обычно вы просто вводите nil — согласно вашему рабочему примеру…

Комментарии:

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