2010-02-04 10 views
44

Eventuali duplicati:
How do I change the title of the “back” button on a Navigation BarCome impostare il testo di un pulsante Indietro su una UINavigationBar?

la situazione:
Ho un UIViewController che è governato da un controller di navigazione. Sono in grado di impostare il titolo della barra di navigazione che copre l'UIViewController semplicemente chiamando self.title = @"title". Ma, voglio essere in grado di impostare il pulsante di testo indietro della barra di navigazione, troppo (per le diverse lingue n' come ..)

Il problema:
non so come impostare il testo del pulsante posteriore.

la domanda:
Come faccio a impostare il pulsante di retro del bar UINavigation (a livello di codice non in IB)?

+0

Buona domanda. Potrebbe non esserci un modo documentato per farlo (sinceramente non lo so), ma sarei sorpreso se cambiandolo in qualcosa che non fosse il titolo dell'articolo precedente o la parola "Back" non fosse contro il cap. E se è contro la HIG, c'è una buona probabilità che questa personalizzazione possa portare a un rifiuto dell'app./2Cents. –

+3

Suggerisci di "accettare" la risposta di Boon, che è corretta. La risposta di Matt non è una buona soluzione (mi dispiace, Matt! :) – Olie

+0

Cambiare l'etichetta sul retro non è contro il HIG, deve solo avere senso. –

risposta

149

La modalità setTitle, sebbene possa sembrare funzionare, non è corretta. Se si presta attenzione, si noterà che l'elemento di navigazione cambia nel nuovo titolo mentre la nuova vista è animata in vista tramite pushViewController. Il fatto che devi ripristinare il titolo in viewWillAppear è kludgy, che suggerisce ulteriormente la sua natura di hacking.

Il modo corretto è quello di effettuare le seguenti operazioni prima della pushViewController:

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

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

+8

Sfortunatamente, non funzionerà in un callback "prepareForSegue: sender:". Non sono sicuro di quale sia la soluzione accettata per gli storyboard. – wcochran

+1

Ho capito che funziona bene in un preparatoreForSegue: mittente: callback. Basta sbarazzarsi di [versione backButton]; se stai usando ARC. – dnorcott

+9

Una cosa vale la pena enfatizzare qui: si imposta il pulsante di ritorno sul controller di visualizzazione corrente, e lo vedrai nel prossimo viewcontroller ... nel caso in cui aiuti qualcuno .. mi ha aiutato. – Zsolt

12

Il modo migliore e più semplice in base alla documentazione di Apple per impostare il titolo del controller della vista a ciò che la parte posteriore dovrebbe dire è questo -

Esempio:

Se viewController1 è sotto viewController2 (e il back button su viewController2 sta per viewController1)

viewController1.title = @"something awesome"; 

il back button su viewController2 mostrerà "qualcosa di impressionante"

+2

Se aggiungi un titolo ai controller della vista nella pila di navigazione, quel titolo apparirà come titolo del pulsante posteriore. "Indietro" è il testo predefinito. Non è necessario rimuovere questo titolo dopo che è stato impostato. Quindi questa è la risposta corretta. – Mark

Problemi correlati