¿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?

Respuestas:


204

En su UIViewController

self.navigationItem.title = @"The title";

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.


11

En viewDidLoad

  self.title = @"Title";

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 .


6

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

  self.navigationItem.title = @"title";

Gracias.


6

También puedes usar 👇🏻

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

2

Este código no me funcionó

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

Pero esto funcionó.

self.title = "Title Name"

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.


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";

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


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"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.