2010-12-23 10 views
1

(bearbeitet: hinzugefügt weitere Informationen unten)Benutzerdefinierte UINavigationBar Taste Anzeige nicht

Zum einen habe ich durch ähnliche Beiträge sah und versuchte, ihre Antworten, aber ohne Glück :(Ich habe eine benutzerdefinierte Navigationsleiste (nur kundenspezifische Hintergrundbild) und ich versuche, eine benutzerdefinierte zurück-Button hinzuzufügen.

// custom back button. 
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *backImg = [UIImage imageNamed:@"btn_back.png"]; 
backBtn.titleLabel.text = @""; 
[backBtn setBackgroundImage:backImg forState:UIControlStateNormal]; 
[backBtn addTarget:self action:@selector(backPressed) forControlEvents:UIControlEventTouchUpInside]; 
backBtn.frame = CGRectMake(0, 0, 54, 33); 

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; 
self.navigationItem.leftBarButtonItem.title = @""; 

der obige Code soll die Schaltfläche hinzufügen, aber es auf der Navigationsleiste nicht angezeigt. ich kann immer noch auf den Bereich klicken, wo sein soll angezeigt werden und es bringt mich zurück zu der vorherigen Ansicht? Entfernen des obigen Codes zeigt die Standard-Zurück-Taste

Irgendwelche Ideen? Danke im Voraus!

(edit)

Hallo wieder Jungs,

Ich habe versucht, alle Ihre Vorschläge und noch kein Glück :(Ich hätte wahrscheinlich schon früher erwähnt habe, dass ich eine benutzerdefinierte Navigationsleiste Bild mit dem folgenden Code. Diese könnte die Anzeige von meiner benutzerdefinierten zurück-Taste Bild zu beeinflussen.

Dieser Code zeigt ein benutzerdefiniertes Bild in Abhängigkeit von einem Parameter I. nochmals vielen Dank für die weitere Hilfe!

// custom navigation bar image 
@implementation UINavigationController (CustomImage) 

// set the background image for the nav bar. 
- (void) setCustomNavBar:(NSInteger)screen { 

UIImage *navBarImg; 
switch (screen) { 
    case kCreateHuntScreenIdentifier: 
     navBarImg = [UIImage imageNamed:@"title_create-hunt.png"]; 
     break; 

    case kCreateLocationsScreenIdentifier: 
     navBarImg = [UIImage imageNamed:@"title_create-location.png"]; 
     break; 

    case kListNewLocationsScreenIdentifier: 
     navBarImg = [UIImage imageNamed:@"title_choose-location.png"]; 
     break; 

    default: 
     break; 
} 

UIImageView *imgView = [[UIImageView alloc] initWithImage:navBarImg]; 
[[[self.navigationBar subviews] objectAtIndex:0] removeFromSuperview]; 
[self.navigationBar addSubview:imgView]; 
[imgView release]; 
} 

@end 
+0

OK, wenn ich ein benutzerdefiniertes Bild für die Navigationsleiste nicht Taste der Brauch zurück tut Anzeige! werde versuchen zu sehen, ob ich beide zusammen anzeigen lasse und ich werde hier ein Update posten, wenn ich herausfinden werde, was passiert! – bennythemink

Antwort

2

Nochmals vielen Dank für Ihre Beratung! Ich fand endlich eine Lösung: D

Sehr schnell musste ich in der Lage sein, das Hintergrundbild für eine Navigationsleiste von Ansicht zu Ansicht zu ändern, wenn ich den Stapel schob oder poppte.

Mit den beliebtesten Methoden wie die drawRect des UINavigationBar zwingende funktionieren würde nur zum Teil, es würde auf der Root-Ansicht arbeiten, aber dann schieben Sie das Bild auf die Vorderseite des Stapels der Navigationsleiste für jeden anderen Bildschirm, egal ob ich es geschickt auf der Rückseite gefunden etc.

ich hier die Lösung: http://sebastiancelis.com/2009/12/21/adding-background-image-uinavigationbar/

eine Lese nehmen, es funktioniert super :)

+0

Nur ein Update, da dieser Beitrag weit über ein Jahr alt ist, mit der Einführung von iOS5 Apple empfiehlt, dass Sie UINavigationBar für benutzerdefinierte Hintergründe ableiten. – bennythemink

+1

Vielen Dank. Ich arbeite an einer App, wo ich Unterstützung für iOS 5 und iOS 4.3 brauche, genau das, wonach ich gesucht habe. Für iOS5 verwende ich diese [self.navigationController.navigationBar setBackgroundImage: navBarBackgroundImage forBarMetrics: UIBarMetricsDefault]; –

0

Versuchen Sie,

self.navigationItem.hidesBackButton = YES;

vor dem Sie den Code für .leftBarButtonItem .Hope Schreiben hilft es

+0

Dank Swastik aber kein Glück damit :( – bennythemink

+0

Ist Ihr Bildname korrekt? Bitte überprüfen Sie – Swastik

+0

Hey Swastik, ja mein Bildname ist korrekt. – bennythemink

1
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom]; 
[btn setBackgroundImage:[UIImage imageNamed:@"imgname.png"] forState:UIControlStateNormal]; 
[btn addTarget:self action:@selector(method_name:) forControlEvents:UIControlEventTouchUpInside]; 
btn.frame=CGRectMake(3, 2, 53, 30); 
UIBarButtonItem *btnBack=[[UIBarButtonItem alloc] initWithCustomView:btn]; 
self.navigationItem.leftBarButtonItem=btnBack; 
[btnBack release]; 
[btn release]; 
+0

verwenden Sie dies in ViewDidLoad Methode – dks1725

+0

Yup das ist die richtige Antwort müssen Sie UIBarButtonItem und alloc sie zuerst.Moreover können Sie auch eine Ansicht für einige benutzerdefinierte Implementierung, und fügen Sie dann Tasten Unteransicht zu View.Then Zuordnung UIBarButton Element mit der benutzerdefinierten Ansicht, die Sie entworfen .... und folgen Sie den oben beantwortete Prozess für weitere – Sabby

+0

Dank dks1725 und Sabby, aber ich fürchte, das hat nicht für mich funktioniert :(Ich vermute, es muss etwas mit der Art und Weise zu tun, wie ich das benutzerdefinierte Navigationsleiste Hintergrundbild, so dass ich meinen Code in eine Bearbeitung aufgenommen habe.Beachten Sie, dass, wenn ich das benutzerdefinierte Schaltflächenbild weglasse, das Standardbild wie üblich angezeigt wird:/ – bennythemink

Verwandte Themen