Ich versuche den Bildhintergrund meiner Navigationsleiste zu ändern, wenn ich in einem bestimmten ViewController bin. Meine App-Modell: - AppDelegate - TabBarController -viewcontroller1 -navigationBarController -viewcontroller2 -viewcontroller3 (*) -viewcontroller4 -viewcontroller5Wie man Navigationsleiste Hintergrundbild manuell in bestimmten ViewController ändern?
ich bereits diesen Code in AppDelegate implementiert haben:
static NSMutableDictionary *navigationBarImages = NULL;
@implementation UINavigationBar(CustomImage)
+ (void)initImageDictionary
{
if(navigationBarImages==NULL){
navigationBarImages=[[NSMutableDictionary alloc] init];
}
}
- (void)drawRect:(CGRect)rect
{
UIColor *color = [UIColor blackColor];
NSString *imageName=[navigationBarImages objectForKey:[NSValue valueWithNonretainedObject: self]];
if (imageName==nil) {
[email protected]"navbar.png";
}
UIImage *image = [UIImage imageNamed:imageName];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
self.tintColor = color;
}
- (void)setImage:(UIImage*)image
{
[navigationBarImages setObject:image forKey:[NSValue valueWithNonretainedObject: self]];
}
@end
danach schrieb ich diesen Code in meinem Viewcontroller2:
[UINavigationBar initImageDictionary];
es ist Arbeit, meine Navigationsleiste ist, wie ich wollte, aber in meinem viewcontroller3, ich schrieb:
UIImage *navBarLandscape = [UIImage imageNamed:@"navbar.png"];
[[[self navigationController] navigationBar] setImage:navBarLandscape];
und es macht nicht den Trick, ich habe einen Fehler, der i undertand nicht:
[UIImage Länge]: unerkannte Selektor Instanz gesendet 0x5a58130 2010-11-18 18: 02: 37,170 finalAudi [1463: 307] * Beenden app aufgrund abgefangene Ausnahme 'NSInvalidArgumentException', Grund: ‚- [ UIImage length]: unerkannter Selektor gesendet an Instanz 0x5a58130 '
Haben Sie eine Idee?
grüße polo.