2010-02-04 2 views
44

Mögliche Duplizieren:
How do I change the title of the “back” button on a Navigation BarWie wird der Text einer Zurück-Schaltfläche in einer UINavigationBar festgelegt?

Die Situation:
Ich habe eine UIViewController, die von einer Navigationssteuerung geregelt. Ich kann den Titel der Navigationsleiste, die den UIViewController abdeckt, einfach durch Aufruf von self.title = @"title" einstellen. Aber ich mag den Zurück-Button Text der Navigationsleiste festlegen zu können, auch (für unterschiedliche Sprachen n‘so ..)

Das Problem:
Ich weiß nicht, wie zu setzen der Text des Zurück-Buttons.

Die Frage:
Wie kann ich die Zurück-Taste des UINavigation bar (programmatisch nicht in IB) eingestellt?

+0

Gute Frage. Es gibt vielleicht keinen dokumentierten Weg, dies zu tun (ich weiß es ehrlich gesagt nicht), aber ich wäre überrascht, wenn ich es zu etwas ändere, das nicht der Titel des vorherigen Artikels ist oder das Wort "Back" nicht dagegen ist die HIG. Und wenn es gegen die HIG ist, besteht eine gute Chance, dass diese Anpassung zu einer Ablehnung der App führen kann./2 Cent. –

+3

Schlagen Sie vor, dass Sie Boons Antwort "akzeptieren", was korrekt ist. Matts Antwort ist keine gute Lösung (tut mir leid, Matt! :) – Olie

+0

Das Ändern des Backlabels ist nicht gegen das HIG, es muss nur Sinn machen. –

Antwort

149

Der setTitle Weg - obwohl scheint zu funktionieren, ist falsch. Wenn Sie genau hinsehen, werden Sie feststellen, dass der Navigationseintrag in den neuen Titel wechselt, während die neue Ansicht über pushViewController in die Ansicht animiert wird. Die Tatsache, dass Sie Ihren Titel in viewWillAppear wiederherstellen müssen, ist kludgy, was wiederum auf seine Hack-Art hinweist.

Der richtige Weg ist die folgende, bevor Sie Pushviewcontroller zu tun:

 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
           initWithTitle: @"Back Button Text" 
           style: UIBarButtonItemStyleBordered 
           target: nil action: nil]; 

[self.navigationItem setBackBarButtonItem: backButton]; 
[backButton release]; 

+8

Leider funktioniert nicht in einem 'prepareForSegue: sender:' Callback. Ich bin nicht sicher, was die akzeptierte Lösung für Storyboards ist. – wcochran

+1

Ich habe das in einem PrepareForSegue gut funktionieren: Sender: Rückruf. Einfach loswerden [backButton release]; wenn Sie ARC verwenden. – dnorcott

+9

Eine Sache ist es wert, hier zu betonen: Sie setzen die Zurück-Taste auf dem aktuellen View-Controller, und Sie werden es in der nächsten Viewcontroller sehen ... für den Fall, dass es jemand hilft .. es hat mir geholfen. – Zsolt

12

Die beste und einfachste Weg, nach Apfel Dokumentation der View-Controller-Titel zu setzen, was sollte der Rücken sagen ist dies -

Beispiel:

Wenn viewController1 unter viewController2 (und die back button auf viewController2 geht zu viewController1)

viewController1.title = @"something awesome"; 

die back button auf viewController2 zeigen "etwas awesome"

+2

Wenn Sie den View-Controllern im Navigationsstapel einen Titel hinzufügen, wird dieser Titel als Titel der Zurück-Schaltfläche angezeigt. "Zurück" ist der Standardtext. Sie müssen diesen Titel auch nicht entfernen, nachdem er festgelegt wurde. Daher ist dies die richtige Antwort. – Mark

Verwandte Themen