80

Hola a todos. Todavía soy bastante nuevo en el desarrollo de iPhone, y me está costando trabajo descifrar cómo cambiar el título de mi barra de navegación. En otra pregunta en este sitio alguien recomienda el uso de:iPhone: configuración de la barra de navegación Título

viewController.title = @"title text"; 

pero que no está funcionando para mí ... ¿Es necesario añadir un UINavigationController para lograr esto? ¿O tal vez solo una salida de mi subclase UIViewController? Si ayuda, definí la barra de navegación en IB e intento establecer su título en mi subclase UIViewController. Esta es otra de esas cosas simples que me da dolor de cabeza. Poniendo self.title = @ "title text"; en viewDidLoad y initWithNibName tampoco funcionó. Alguien sabe lo que está pasando y cómo hacer que suceda, ¿verdad?

Gracias!

Respuesta

147

El controlador de vista debe ser un hijo de algún UINavigationController para que la propiedad .title surta efecto. Si el UINavigationBar es simplemente un punto de vista, es necesario empujar un elemento de navegación que contiene el título, o modificar el último elemento de navegación:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"]; 
... 
[bar pushNavigationItem:item animated:YES]; 
[item release]; 

o

bar.topItem.title = @"title text"; 
+8

Wow. En serio, pasé la última hora navegando por los foros y la documentación tratando de resolver esto, y me había convencido de que sería más complejo que esto. Este código es muy simple y no tuve que volver a manipular nada en IB. ¡Perfecto! KennyTM, Rock. Si recuerdo, también respondió mi pregunta NSDate y me puso a buscar diccionarios. Eres mi nueva persona favorita en este sitio. ¡Muchas gracias por toda su ayuda! –

+5

su comentario me hizo sonreír y preguntarme: ¿alguna vez alguien hizo amigos aquí en SO, alguna vez? por lo general todos aquí son muy útiles, pero no parecen expresar ninguna emoción humana (excepto el que pregunta, por supuesto, cuando está frustrado) – figha

+0

@figha: http://chat.stackoverflow.com/ es el lugar para eso. – kennytm

118

si usted está haciendo todo por código en el método de la UIViewControllerviewDidLoad sólo se debe añadir self.title = @"title text";

algo como esto:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.title = @"title"; 
} 

También puede probar self.navigationItem.title = @"title";

también para comprobar si su elemento de navegación no es nulo y si ha establecido un fondo personalizado en la barra de navegación, compruebe si el título está configurado sin él.

+0

@ Sorina, Gracias. Es la mejor manera de dar el título de barra de navegación. – Tirth

+1

Esto funciona también si usa guiones gráficos. – Napolux

1

Supongo que necesita un título dinámico y es por eso que no lo establece en IB.

Y supongo que su objeto ViewController es el especificado en el NIB?

Tal vez pruebe establecer a un valor ficticio en IB y luego depurar los métodos para ver qué controlador tiene el valor ficticio - suponiendo que aparece como título ...

5

En mi aplicación basada en la navegación hago esto:

myViewController.navigationItem.title = @"MyTitle"; 
30

Hay un problema con el uso self.title = @"title";

Si está utilizando la barra de navegación junto con la barra de pestañas, la línea anterior también cambia la etiqueta del elemento de la barra de pestañas. Para evitar esto, utilice lo que sugirió @testing

self.navigationItem.title = @"MyTitle"; 
4

Por defecto, el controlador de navegación muestra el título de la 'topitem'

por lo que en su método de viewDidLoad de su AppDelegate que pueda.Lo probé y funciona

navController.navigationBar.topItem.title = @"Test"; 
2
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"]; 
... 
[bar pushNavigationItem:item animated:YES]; 
[item release]; 

Este código funcionó.

+0

Bienvenido a SO y gracias por la publicación. Será mejor que busque publicar esta información como un comentario. Consulte [Cómo responder] (http://stackoverflow.com/questions/how-to-answer) para obtener más información. –

4

Tenía un controlador de navegación integrado en un TabbarController. Esto funcionó

[email protected]"title"; 
2

Si está trabajando con guiones gráficos, puede hacer clic en el controlador, vaya a la ficha de propiedades y establezca el texto del título allí.

9

Si desea cambiar el título de una navBar interior de un controlador de barra de pestañas, haga lo siguiente:

-(void)viewDidAppear:(BOOL)animated { 
    self.navigationController.navigationBar.topItem.title = @"myTitle"; 
} 
+0

viewDidAppear hizo el truco para mí después de 2 horas tratando de resolver esto. Gracias :) – Tchelow

+0

Esto es perfecto –

+0

topItem.title puede o no ser el título de la barra de navegación. Si es la pantalla de nivel superior sin botón de retroceso, establecerá el título. Pero si tiene un botón Atrás, el topItem.title es en realidad el título del botón Atrás. – user2962499

12

Si desea cambiar el título barra de navegación (no barra de navegación de regreso título del botón!) Este código será un trabajo.

self.navigationController.topViewController.title = @"info"; 
+0

¡Gracias, esto funcionó para mí! – davis

1

desde dentro de su TableViewController.m :

self.navigationController.navigationBar.topItem.title = @ "Bla, bla, algún título increíble";

1

Para todos sus Swift-ers, esto funcionó perfectamente para mí. Es sobre todo una de las maneras más cortos para lograr Ajuste del título, así:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "presentLineItem" { 
    print("Setting Title") 
    var vc = segue.destinationViewController as! LineItemsTableViewController 
    vc.navigationItem.title = "Line Item" 
    } 
} 
0

lo que funcionó para mí fue self.titleLabel.text = @"New Title";

Cuestiones relacionadas