¿Cómo cambiar el nombre del botón Atrás del UINavigationController?

Tengo un UIViewController y estoy navegando desde mi primer controlador de vista a segundo controlador de vista y quiero cambiar el nombre del botón que se muestra en el controlador de navigationcontroller para volver atrás ….

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

ahora en el segundo viewcontroller quiero cambiar el nombre del botón en el navigationController .

En viewWillAppear escribe esto

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

Y en ViewWilldisapper escribe esto

 self.navigationItem.title = @"Back"; 

Funciona sin story boards.

Si desea hacer esto programáticamente, puede hacerlo así:

C objective

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

Rápido

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

Sin embargo, si prefiere utilizar Interface Builder, simplemente seleccione el UINavigationItem para el que desea establecer el botón Atrás, y navegue hasta el inspector de atributos para cambiar el título del botón Atrás.

enter image description here

NOTA: es importante recordar que debe configurar esto en el controlador de vista al que volvería al tocar el botón Atrás, no el controlador de vista actualmente visible.

Hay una manera fácil de hacerlo en Interface Builder o Storyboarding. En el Controlador de vista principal, simplemente configure el atributo “Atrás” del elemento de navegación para cualquier título que desee. Aquí hay un ejemplo:

Establecer el botón Atrás Título del controlador de vista infantil desde el controlador de vista padre

Villian’s Tavern View tendrá “Atrás” como Título del Botón Atrás, como lo que acabamos de configurar en el inspector de atributos del controlador de navegación del padre (Mejores Barras).

En mi caso, solo funcionaba ejecutando el código en el hilo principal, así:

 dispatch_async(dispatch_get_main_queue(), ^(void) { self.navigationController.navigationBar.backItem.title = @"Custom Title"; }); 

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: El botón Atrás pertenece al controlador de vista anterior, no el que se presenta actualmente en la pantalla. Para modificar el botón Atrás, debe actualizarlo antes de presionar, en el controlador de vista que inició el cambio:

Es muy importante que, en vista, la opción del controlador “Métricas simuladas” no esté seleccionada como “Inferida”.

¡Intenté con “Ninguno” y todo está bien!

Pruebe de esta manera: –

 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]; } 

Puedes lograr esto usando titleView of navigationItem

Swift 3 respuesta

• Cree una extensión para UINavigationItem como a continuación

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

• En sus controladores viewDidLoad haga lo siguiente

 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") } 

En Swift encontré la solución muy simple,

Supongamos que estoy en ViewControllerA y voy a ViewControllerB , si deseo cambiar el nombre del botón de retroceso que se muestra en ViewControllerB , lo haré en ViewControllerA ,

 self.title = "BackButtonTitle" 

Eso es.

Nota: – Esto cambiará el título de ViewControllerA

Si usas Storyboard, hay una manera fácil de hacerlo (funcionó bien para mí).

  • Ve a tu guión gráfico
  • Seleccione qué UIViewController desea cambiar el texto del botón Atrás.
  • Haga clic en el UINavigationItem en la parte superior de su UIViewController. (el que tiene el título)
  • En el panel de la derecha, selecciona el inspector de atributos (el 4º icono).
  • Ahora puede establecer los textos de Título, Indicación y Botón Atrás.

enter image description here

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

En realidad puedes cambiar el título del botón Atrás

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

Si usa referencias a Storyboard, es posible que View Controller no muestre el elemento de navegación en Interface Builder.

El arrastre manual de una barra de navegación no funcionará, debe arrastrar un elemento de navegación

Luego podrá establecer el título de su botón Atrás. Aquí también es donde establecerá el título de la vista.

Citando a Mick MacCallum:

NOTA: es importante recordar que debe configurar esto en el controlador de vista al que volvería al tocar el botón Atrás, no el controlador de vista actualmente visible.

Hay dos maneras de hacer esto.

La primera forma es por código de progtwig:

La respuesta de Yakimenko Aleksey es la manera más simple. Esto realmente funciona (probado en Xcode 8 + iOS 10)

Swift3:

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

Nota: debe llamar al código anterior en el controlador de vista de origen, no al controlador de vista de destino.

La segunda forma es usar la localización del guión gráfico a través del archivo Main.strings ,

 "nnnnnnn.title" = "localized string"; 

El nnnnnnn significa el Id. De objeto del BackBarButtonItem en el controlador de vista de origen (¡no en el controlador de vista de destino!)

Necesita establecer la propiedad “Atrás” del elemento de la barra de navegación, creará automáticamente un BarButtonItem, encontrará su id de objeto.

Lo sentimos, no pude cargar capturas de pantalla.

Tenía un guión gráfico bastante complejo con muchos controladores de navegación, y mi cliente quería que todos los botones de retroceso dijeran “Atrás”

Pasé por Interface Builder y coloqué “Atrás” en el campo Atrás del botón de cada UINavigationItem.

¡No estaba trabajando para cada cambio de escena!

El problema era que no todos los controladores de vista en el guión gráfico tenían un UINavigationItem.

Lo arreglé arrastrando un nuevo UINavigationItem en cada UIViewController que no tenía uno, y estableciendo todos los campos del botón Atrás en “Atrás”

Tenga cuidado con los controladores que no tienen su propio UINavigationItem automáticamente.

Swift 4

En su UIViewController , configure esto:

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

Pruebe el código siguiente:

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