#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. Что это указывает?