E 'abbastanza facile da trascinare gli elementi della barra del tasto sulla barra di navigazione di un controller di vista in uno storyboard in Interface Builder. In questo modo, è possibile impostare le uscite leftBarButtonItem
e rightBarButtonItem
dell'elemento di navigazione del controller della vista. Ma c'è anche uno sbocco backBarButtonItem
, e non è affatto ovvio come impostarlo. Come posso impostare una voce del pulsante barra posteriore personalizzata usando Interface Builder?Configurazione del backBarButtonItem di un controller di Visualizza Articolo di navigazione in uno storyboard
risposta
Selezionare il controller della vista di cui si desidera modificare gli elementi di navigazione. La barra nera che mostra l'identità del controller della vista cambia in un vassoio iconizzato dei suoi oggetti referenziati.
Trascinare un elemento pulsante della barra dalla libreria di oggetti sul vassoio.
- fate clic destro sulla voce di navigazione del controller della vista nel vassoio oggetto principale sul lato sinistro. Collegare il pulsante appena aggiunto come presa
backBarButtonItem
dell'articolo di navigazione.
- Selezionare il pulsante della barra e configurarlo in qualsiasi modo si sceglie con l'ispettore attributi.
In Interface Builder, è possibile modificare il titolo del pulsante Indietro dell'oggetto di navigazione.
A livello di codice, è possibile impostare un pulsante Indietro personalizzato nel metodo viewDidLoad del controller di visualizzazione. In questo esempio abbiamo impostato l'immagine del pulsante per un'immagine denominata "customImage.png":
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordered target:self action:nil];
// Set custom image here
backButton.image = [UIImage imageNamed:@"customImage.png"];
self.navigationItem.backBarButtonItem = backButton;
}
Questo non è corretto. Vedere la mia risposta su come configurare le altre proprietà dei pulsanti in Interface Builder. – warrenm
@warrenm fornisce anche il collegamento. così l'utente può ottenere direttamente questa risposta. – Ayaz
Ok, [qui] (http://stackoverflow.com/a/9894298/155187). – warrenm
Come @wcochran osservato in precedenza, quando si lavora con viewControllers spinto sulla pila di un navigationController, presa backBarButtonItem già cablata non può essere modificato. Inoltre, la selezione dell'elemento di navigazione del bambino VC e la modifica del testo del pulsante Indietro in IB non fanno ciò che ci si aspetterebbe.
Ora si potrebbe pensare che la sostituzione del bambino backBarButtonItem del VC avrebbe risolto il problema, ma non è così. Confusamente, se si desidera impostare il titolo del pulsante Indietro di un bambino VC, è necessario impostare il titolo tasto posteriore della sua genitore, in questo modo (!):
- (void)viewWillAppear:(BOOL)animated // in the parent VC!
{
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
}
Questo non lo farà qualsiasi cosa sul genitore VC. Infatti, se il genitore è il RootViewController del NavigationController, non ci sarà affatto un pulsante indietro. Ma il bambino erediterà (o raccoglierà) il pulsante indietro che hai creato.
Questo vale solo per il bambino immediato VC, quindi se si vuole mantenere l'etichetta verso il basso attraverso stack del navigationController è necessario impostare su ciascun genitore.
Grazie alla @wiliz in #iphonedev per spiegare questo a me.
Sto tornando da molto tempo per lo sviluppo di iOS e nonostante tutti i progressi che abbiamo bisogno di fare hack come questo. Le cose non sono cambiate molto da iOS 3.1.2. Grazie per questa risposta. –
Come @AdamBlock indicato sopra, è necessario impostare le cose nel padre VC.
Mostra come eseguire questa operazione a livello di programmazione. È anche possibile farlo nel generatore di interfacce.
- Selezionare il genitore VC
- Selezionare la voce di navigazione
- Aprire l'Attributi
- Impostare il titolo per il pulsante Indietro.
Il mio elemento di navigazione ha già un 'backBarButtonItem' cablato (poiché è la destinazione di un push segue) ed è immutabile. Non sembra esserci alcun modo per modificare effettivamente il titolo del pulsante Indietro: l'impostazione del campo "Pulsante Indietro" nell'Inspector degli attributi non ha alcun effetto. – wcochran
Ti incoraggerei a creare una domanda separata per questo se stai cercando una soluzione e trovi che l'idea di farlo a livello di programmazione sia sgradevole. Sfortunatamente, la tua è una situazione che non ho ancora incontrato. – warrenm
@wcochran - questo è successo anche a me. È una piccola svista in Xcode, la soluzione è scegliere UIBarButtonItem nella libreria degli oggetti, quindi trascinarlo sopra l'elemento del pulsante della barra sinistra di UINavigationItem. Vedrai comparire un rettangolo blu, quindi lo imposterà e potrai configurarlo come al solito. –