2011-01-12 34 views
51

Tengo un controlador de vista modal cuya vista proviene de un XIB. Quiero que tenga la misma apariencia que el resto de mi aplicación basada en la navegación, pero no es una vista que se envía a la pila de navegación, sino que se presenta de forma modal. Arrastré un UINavigationBar y lo convertí en una toma de corriente, pero no tiene una propiedad de título para establecer. Tengo dos campos que pueden mostrar esta vista modal, y quiero que el título se establezca de manera diferente dependiendo de cuál cree la vista modal.Establezca el título de la barra de navegación creada en el generador de interfaz

Respuesta

90

UINavigationBar 's gestionar una pila de UINavigationItem s muy similar a un gestor de UINavigationController una pila de UIViewController s. Para configurar lo que está visible directamente, debe usar pushNavigationItem:animated: o setItems:animated: usando el elemento de navegación del controlador de vista que desea que refleje la barra.

por ejemplo:

self.navigationItem.title = @"A custom title"; 
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO]; 

El código anterior en el que tiene una propiedad navigationBar que hace referencia a la barra de navegación autónomo.

Si no desea administrar usted mismo, puede hacer lo que sugirió mplappert y el controlador de nido de su punto de vista (sin autónomo UINavigationBar) en un UINavigationController y presentar el control de navegación de forma modal en lugar de su controlador de vista.

-1

Simplemente coloque su UIViewController en una nueva pila de controladores de vista UINavigationController y presente dicho controlador de navegación de forma modal.

63

También encontré esta forma más fácil si ya ha definido un UINavigationBar en su IB. Suponiendo self.navigationBar es su IBOutlet:

self.navigationBar.topItem.title = title; 
+1

Esta es la respuesta correcta. – Fengson

+0

Esto funcionó para mí. –

+1

en mi caso: self.navigationController.navigationBar.topItem.title = @ "title" –

8

(Uso de XCode 4.5.2) Ha encontrado un método que funciona directamente en el Interface Builder - sin poner en código.

Con el objeto ViewController seleccionado en (IB), debajo del Inspector de identidad hay una sección con la etiqueta "Atributos de tiempo de ejecución definidos por el usuario". Agregué el "título" keyPath de tipo String y lo configuré con el valor que quería.

Probado y funciona cuando se lo coloca en una pila de controladores Nav y cuando se abre de forma modal (con un controlador Mo Nav, por supuesto).

+1

¿Cómo localizar este valor? – Arvis

0

en mi archivo .h

  • arrastró al niño del elemento de navegación de un guión en el archivo .h

  • llamó "navigationBarTitle"

en mi archivo .m

  • Se agregó self.navigationBarTitle.title = @ "Some Title";
4

viewcontroller.archivo h en crear IBOutlet del elemento de navegación

 @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle; 

- llamó "navigationBarTitle"

en el archivo viewcontroller.m en añadir el código en súper viewDidLoad

 self.navigationBarTitle.title = @"Favorites"; 

conectar el storybord en la navegación barra de elemento a navigationBarTitle.

0

Aquí es la forma más sencilla:

[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"]; 
0

puede utilizar la barra de navegación existente con el código siguiente

self.navigationController?.navigationBar.topItem?.title = "Calender" 
Cuestiones relacionadas