2009-08-25 5 views
2

J'ajoute un viewController à un TabBarController. Lorsque j'ajoute un ViewController de la classe personnalisée et Nib, son icône n'apparaît pas dans le tabBar.Ajout d'une icône de contrôleur de tabulation IPhone

Si j'initialise comme ceci l'icône n'apparaît pas.

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

Mais la création d'un viewController générique fonctionne.

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

Ici, nous ajoutons l'image et le titre.

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

Comment puis-je obtenir l'icône à afficher si la charge provient d'un NIB?

Répondre

1

Vous pouvez ajouter l'appel au compositeur tabBarItem.image dans la méthode du contrôleur de vue personnalisée viewDidLoad:

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

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

Edit: OK, cela ne fonctionne pas. Essayez:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

Je pensais que votre suggestion serait efficace, mais toujours pas d'icône. D'autres idées Tim? – Bryan

+0

Peut-être initialisez-vous tout l'élément de la barre d'onglets en entier? Voir le code édité ci-dessus. – Tim

+0

Merci. J'étais en train d'écraser l'image et le titre à un autre endroit. Cela fonctionne réellement! Un seul problème ici est que jusqu'à ce que vous cliquiez sur l'onglet pour charger la vue, le tabBarItem n'a pas d'icône ou d'étiquette. Des idées? – Bryan

0

Pourquoi transmettez-vous [NSBundle mainbundle] à l'init de FlashCardViewController? Habituellement, vous venez de passer à zéro - selon votre exemple de travail ...

+0

Je pensais que cela pourrait être un problème et je l'ai passé à zéro, mais il n'y avait pas de différence, donc je suis resté avec ce que j'avais avant. J'avais chargé FlashCardViewController par lui-même - pas dans un TabBarController - et cela a bien fonctionné. Je ne suis pas sûr pourquoi je passe NSBundle mainbubdle. Qu'est-ce que cela spécifie? – Bryan

Questions connexes