¿Cómo establecer el título de una barra de navegación mediante programación?

84

Tengo una barra de navegación en una vista y quiero cambiar el título del elemento de navegación mediante programación.

¿Cómo se hace esto?

Doug nulo
fuente

Respuestas:

204

En su UIViewController

self.navigationItem.title = @"The title";
arclight
fuente
Sí, elegiría esto ya que solo actualiza el título del elemento de navegación y no el título del elemento de la barra de herramientas.
Prakash Raman
30

Versión Swift 3:

Si usa una barra de navegación sin controlador de navegación, puede probar esto:

navigationBar.topItem?.title = "Your Title"

Espero ayuda.

Jerome
fuente
11

En viewDidLoad

  self.title = @"Title";
Madhu
fuente
3
Mis dos centavos :) Esto funciona, aunque si el controlador vew es parte de un controlador de barra de herramientas. Luego, el título de la barra de herramientas también se actualiza.
Prakash Raman
7

De la documentación de Apple :

La forma más común de usar una barra de navegación es con un controlador de navegación. También puede utilizar una barra de navegación como un objeto independiente en su aplicación.

Entonces, si tiene un UINavigationController, todo lo que tiene que hacer para establecer el título de la barra de navegación (como se explica en todas las respuestas anteriores)

self.navigationItem.title = @"title";

Pero si tiene una barra de navegación independiente que se crea mediante programación dentro de un objeto de UIViewController, debe establecer la apariencia inicial de la barra de navegación creando los objetos UINavigationItem apropiados y agregándolos a la pila de objetos de la barra de navegación, es decir

  1. Cree una instancia de la barra de navegación (UINavigationBar)
  2. Cree una instancia del elemento de la barra de navegación (UINavigationItem) que administra los botones y las vistas que se mostrarán en un objeto UINavigationBar. Tenga en cuenta que establece el título en este paso.
  3. (Paso opcional) Agregue botones derecho / izquierdo (instancias de UIBarButtonItem) al elemento de la barra de navegación.

Muestra de código Objective-C para los pasos mencionados:

UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];

/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;

/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;

/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];

/* add navigation bar to the root view.*/
[self.view addSubview:navbar];

Para la versión Swift de la barra de navegación independiente, consulte esta respuesta .

Wael Showair
fuente
6

Escriba el siguiente código en viewDidLoado puede ser mejor sería debajoinitWithNibName:

  self.navigationItem.title = @"title";

Gracias.

Nikhil Bansal
fuente
6

También puedes usar 👇🏻

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
Surjeet Rajput
fuente
2

Este código no me funcionó

self.navigationItem.title = @"Title here";

Pero esto funcionó.

self.title = "Title Name"
Prasad A
fuente
2

En la vista de su UIViewController

self.navigationItem.title = "The title";  //In swift 4

o

tu puedes sólo

self.title = "The title"

hará el truco

También puede poner la declaración anterior en el delegado de la aplicación para replicar globalmente.

NickCoder
fuente
0

Úselo en el método ViewDidLoad

Formato :

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

Ejemplo:

self.navigationItem.title = @"Title here";
Jayprakash Dubey
fuente
0

nota muy importante: asegúrese de realizar los cambios mencionados anteriormente en la vista principal del método viewDidLoad del controlador o en la barra de navegación de los padres en el guión gráfico

smoothumut
fuente
0

A veces, es posible que tenga un caso en el que está actualizando el título y no está causando ningún efecto, esto puede ser cuando tiene una vista personalizada, por topItemlo que es posible que desee actualizarlo de esta manera:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

Hola Soy Edu Feliz Navidad
fuente