10

Ich habe eine UIView mit einer Navigationsleiste und ich möchte eine Schaltfläche hinzufügen, die wie der Stil einer Zurück-Schaltfläche aussieht. Ich benutze keinen UINavigationController und frage mich, ob das ohne es geht?Benutzerdefinierte Zurück-Schaltfläche auf iPhone Navigationsleiste zeichnen

Der Stil der Taste sollte wie folgt aussehen: alt text

Dank

+2

@casperOne Abgesehen von einer Frage fast zwei Jahre nach der Beantwortung, warum haben Sie das geschlossen? Die akzeptierte Antwort in http://stackoverflow.com/questions/227078 schlägt vor, ein Bild zu verwenden, während die Antwort unten von Mike Weller viel eleganter ist. Ganz zu schweigen davon, dass die Antwort hier neuere Geräte unterstützt (zum Beispiel habe ich dieses Codebeispiel nicht geändert, als das Retina-Display gestartet wurde und es immer noch funktioniert. Ein Bild würde ein Low-Res-Finish zeigen). –

Antwort

16

Sie benötigen einen benutzerdefinierten Stapel von UINavigationItem Objekte einzurichten und schieben Sie sie auf die UINavigationBar auf. Nur so kann ich einen echten Zurück-Button bekommen. Ich habe diesen Code nicht getestet, aber Sie sollten etwas tun:

UINavigationItem *previousItem = 
    [[[UINavigationItem alloc] initWithTitle:@"Back title"] autorelease]; 

UINavigationItem *currentItem = 
    [[[UINavigationItem alloc] initWithTitle:@"Main Title"] autorelease]; 

[navigationBar setItems:[NSArray arrayWithObjects:previousItem, currentItem, nil] 
       animated:YES]; 

zu behandeln, wenn die Tasten gedrückt werden Sie sich als der Navigationsleiste des Delegierten setzen sollte und die UINavigationBarDelegate Delegierten implementieren.

+0

FYI: das Festlegen des Delegaten einer navigationBar, die von einem navigationController verwaltet wird, löst eine Ausnahme aus: '*** App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException' beenden, Grund: 'Der Delegat kann nicht manuell auf einer von einem Controller verwalteten UINavigationBar gesetzt werden.' ' – stigi

+0

Was ist das aktuelle Item? – scientiffic

1

Sie können dieses auch aktualisieren, indem Sie die backBarButtonItem auf dem vorherigen Ansichtscontroller (nicht den derzeit angezeigten) ändern.

+0

Hallo, ich denke, die Antwort mir in meinem Problem helfen können, bitte, wie die backBarButtonItem in meinem Code zu verwenden, vorausgesetzt, dass dies mein Code in der vorherige Ansicht ist: - (IBAction) goToRechercherView \t { \t \t rechercherViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; \t \t [selbst anwesendModalViewController: rechercherViewController animiert: YES]; \t } – Malloc