1

J'ai 3 contrôleur de navigation et je veux changer chaque fond en utilisant une image différente. J'étais mettre en œuvre une catégorie qui va UINavigationBar comme ceci:changer 3 fond de barre de navigation avec image différente

- (void)drawRect:(CGRect)rect { 
UIImage *image = [UIImage imageNamed:@"background.png"]; 
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];} 

@end

mais faire tous les bars de navigation ont une même image d'arrière-plan. Et puis je tente de mettre en œuvre le code comme ceci:

- (void)viewDidLoad { 
[super viewDidLoad]; 
self.navigationController.navigationBar.tintColor = [UIColor blackColor]; 
UIImageView *backGroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; 
[self.navigationController.navigationBar insertSubview:backGroundView atIndex:0]; 
[backGroundView release]; 

}

dans chaque contrôleur, mais chaque arrière-plan montrent que l'tintColor, pas l'image ... Que dois-je faire ???

et comment si je veux faire ça aussi dans tabbarController ??

Répondre

0

Sur chacun de vos points de vue, mettre en œuvre ce qui suit dans votre méthode viewWillAppear:

#import <QuartzCore/QuartzCore.h> 
... 

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"yourImageBgHere"].CGImage; 
} 

Cheers, Rog

+0

thx Rog, mais il est toujours pas changer quoi que ce soit ... une idée ?? –

+0

Pas d'inquiétude dans quelle vue utilisez-vous ce code? Pouvez-vous poster vos fichiers d'interface et d'implémentation? – Rog

+0

Désolé Rog, ça change dans mon 1er contrôleur. le 1er contrôleur hérite de UITableViewController, mais dans le 2ème contrôleur (hérite de UIViewController), il ne change pas. –