/ / Come modificare il nome del pulsante Indietro di UINavigationController? - ios, uiviewcontroller, uinavigationcontroller, uinavigationitem

Come modificare il nome del pulsante Indietro di UINavigationController? - ios, uiviewcontroller, uinavigationcontroller, uinavigationitem

Ho un UIViewController e sto navigando dal mio primo controller di visualizzazione al secondo controller di visualizzazione e voglio cambiare il nome del pulsante mostrato sul navigationcontroller per tornare indietro ....

SecondViewController *secondController = [[SecondViewController alloc]
initWithNibName:nil
bundle:NULL];
[self.navigationController pushViewController:secondController  animated:YES];

ora nel secondo viewcontroller Voglio cambiare il nome del pulsante nel navigationController.

risposte:

32 per risposta № 1

In viewWillAppear scrivi questo

self.navigationItem.title = @"List View";

E in ViewWilldisapper scrivi questo

self.navigationItem.title = @"Back";

Funziona senza storyboard.


179 per risposta № 2

Se desideri farlo a livello di codice, può essere fatto in questo modo:

Objective-C

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"Custom"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];

[self.navigationItem setBackBarButtonItem:backItem];

veloce

let backItem = UIBarButtonItem(title: "Custom", style: .Bordered, target: nil, action: nil)
navigationItem.backBarButtonItem = backItem

Tuttavia, se preferisci utilizzare Interface Builder, seleziona semplicemente UINavigationItem per il quale desideri impostare il pulsante Indietro, quindi vai a inspector degli attributi per modificare il titolo del pulsante Indietro.

inserisci la descrizione dell'immagine qui

NOTA: È importante ricordare che è necessario configurarlo sul controller della vista a cui si ritornerà dopo aver toccato il pulsante Indietro, non il controller della vista attualmente visibile.


42 per risposta № 3

C'è un modo semplice per farlo nell'interfacciaCostruttore o Storyboard. Nel controllore Visualizza genitore, basta impostare l'attributo "Pulsante Indietro" della voce di navigazione sul titolo che si desidera. Ecco un esempio:

Imposta pulsante Indietro Titolo del controller della vista padre del controllore della vista figlio

La Visualizzazione taverna di Villian avrà "Indietro" come Titolo pulsante indietro, come abbiamo appena impostato nell'ispettore attributi del controller di navigazione del genitore (Best Bars).


4 per risposta № 4

Nel mio caso ha funzionato solo eseguendo il codice sul thread principale, in questo modo:

dispatch_async(dispatch_get_main_queue(), ^(void) {

self.navigationController.navigationBar.backItem.title = @"Custom Title";
});

3 per risposta № 5

Swift 3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

Nota:Il pulsante Indietro appartiene al controller della vista precedente, non quello attualmente presentato sullo schermo. Per modificare il pulsante Indietro è necessario aggiornarlo prima di premere, sul controller della vista che ha avviato il seguente:


2 per risposta № 6

In veloce Ho trovato la soluzione molto semplice,

Supponiamo di essere su ViewControllerA e di andare su ViewControllerB, Se voglio cambiare il nome del pulsante indietro visualizzato su ViewControllerB, lo farò in ViewControllerA,

self.title = "BackButtonTitle"

Questo è tutto.


1 per risposta № 7

È molto importante che in visualizzazione l'opzione "Metriche simulate" del controller non sia selezionata come "Inferred".

Ho provato con "Nessuno" e tutto è giusto!


1 per risposta № 8

Prova così: -

NSArray *viewControllerArr = [self.navigationController viewControllers];
// get index of the previous ViewContoller
long previousViewControllerIndex = [viewControllerArr indexOfObject:self] - 1;
UIViewController *previous;
if (previousViewControllerIndex >= 0) {
previous = [viewControllerArr objectAtIndex:previousViewControllerIndex];
previous.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back"
style:UIBarButtonItemStylePlain
target:self
action:nil];
}

1 per risposta № 9

È possibile ottenere questo utilizzando titleView di navigationItem

Risposta rapida 3

• Creare un'estensione per UINavigationItem come sotto

extension UINavigationItem {
func customTitle(title: String) {
let titleLabel = UILabel()
titleLabel.text = title
titleLabel.textColor = UIColor.white
titleLabel.textAlignment = .center
titleLabel.sizeToFit()
titleView = titleLabel
}
}

• Nei tuoi controller viewDidLoad eseguire le seguenti operazioni

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
title = "Text For Back Button"
navigationItem.customTitle(title: "Title for your view controller")
}

0 per risposta № 10

Se usi Storyboard, c'è un modo semplice per farlo (ha funzionato bene per me).

  • Vai al tuo storyboard
  • Seleziona quale UIViewController desideri modificare il testo del pulsante Indietro.
  • Fai clic su UINavigationItem nella parte superiore di UIViewController. (quello con il titolo)
  • Nel pannello a destra, seleziona l'ispettore attributi (la quarta icona).
  • Ora puoi impostare i testi Titolo, Prompt e Pulsante Indietro.

inserisci la descrizione dell'immagine qui

Fonte: http://pinkstone.co.uk/how-to-change-the-back-button-text-on-a-uinavigationcontroller-in-your-storyboard/


0 per risposta № 11

In realtà puoi cambiare il titolo del pulsante Indietro

self.navigationItem.backBarButtonItem.title = @"NewName";

0 per risposta № 12

Se si usano riferimenti alla Storyboard, il View Controller potrebbe non visualizzare l'elemento di navigazione su Interface Builder.

Trascinando manualmente una barra di navigazione non funzionerà, è necessario trascinare a Articolo di navigazione

Sarai quindi in grado di impostare il titolo del suo pulsante posteriore. Questo è anche il punto in cui imposterai il titolo della vista.

Citando Mick MacCallum:

NOTA: È importante ricordare che è necessario configurarlo sul controller della vista a cui si ritornerà dopo aver toccato il pulsante Indietro, non il controller della vista attualmente visibile.


0 per risposta № 13

Ci sono due modi per farlo.

Il primo modo è dal codice del programma:

La risposta di Yakimenko Aleksey è il modo più semplice, Funziona davvero (testato su Xcode 8 + iOS 10)

Swift3:

self.navigationItem.backBarButtonItem?.title = "Your customized back title"

Nota: è necessario chiamare il codice sopra nel controller della vista sorgente, non il controller della vista di destinazione.

Il secondo modo è utilizzare la localizzazione dello storyboard tramite Main.strings file,

"nnnnnnn.title" = "localized string";

Il nnnnnnn significa l'id oggetto del BackBarButtonItem in fonte guarda il controller (non il controller della vista di destinazione!)

È necessario impostare la proprietà "indietro" dell'elemento della barra di navigazione, creerà automaticamente un oggetto BarButtonItem, si trova il relativo ID oggetto.

Siamo spiacenti, non sono riuscito a caricare screenshot.


0 per risposta № 14

Ho avuto uno storyboard piuttosto complesso con molti controller di navigazione, e il mio cliente voleva tutti i pulsanti posteriori per dire "Indietro"

Sono passato in Interface Builder e ho messo "Indietro" nel campo Pulsante Indietro di ogni UINavigationItem.

Non stavo lavorando per ogni cambio di scena!

Il problema era questo non ogni controller di visualizzazione nello storyboard aveva un UINavigationItem.

Ho risolto questo problema trascinando un nuovo UINavigationItem su ogni UIViewController che non ne aveva uno e impostando tutti dei campi del pulsante Indietro su "Indietro"

Prestare attenzione ai controller che non dispongono automaticamente del proprio UINavigationItem.


0 per risposta № 15

Swift 4

Nel tuo UIViewController, imposta questo:

let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton

-1 per risposta № 16

Prova sotto il codice:

[self.navigationItem setValue:@[@"customTitle",@""] forKey:@"abbreviatedBackButtonTitles"];