2010-08-01 17 views
5

Estoy tratando el siguiente código:¿Cómo configuro correctamente el título de NavigationController de UIViewController?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
Thing *sub = [[subscriptions objectAtIndex:indexPath.row] retain]; 
StoriesViewController *thing = [[StoriesViewController alloc] initWithThing:sub]; 
thing.navigationController.title = sub.title; 
[self.navigationController pushViewController:thing animated:YES]; 
[thing release]; 
[sub release]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

pensé que esta es la forma de configurar correctamente el título para empujar el controlador. Intenté thing.title sin embargo, eso fue establecer el título de TabBarItem en su lugar.

+0

Más bien discutido aquí: http://stackoverflow.com/questions/2280710/iphone-setting-navigation-bar-title –

Respuesta

14
thing.navigationItem.title = sub.title; 

o en el archivo StoriesViewController.m en viewDidLoad método:

self.navigationItem.title = sub.title 
+0

thing.navigationItem.title no funciona, lo probé antes y después empujo ViewController sin suerte. –

+0

configúrelo en el método viewDidLoad de su contoroller – jamapag

+2

Hola, probé self.navigationController.title = @ "Registration"; ¿cuál es la diferencia? no funciona – OMGPOP

1

El título es necesario establecer en (o después) viewDidLoad, por lo que si desea establecer de otra clase que está creando StoriesViewController .

  1. Haz otra propiedad y haz que la clase lo configure.
  2. En StoriesViewController's viewDidLoad, establezca el título de esa propiedad.

Esto se debe a que las tomas de corriente no se inicializan a sus contrapartes de vista hasta viewDidLoad.

Parece que StoriesViewController se está aferrando a sub (¿el initWithThing le ha asignado una propiedad?) En ese caso, simplemente establezca el título en viewDidLoad en el título de la propiedad Thing.

+0

no parece funcionar, aunque su razonamiento tiene sentido. –

0
[thing setTitle: sub.title]; 
0

La solución se thing.navigationItem.title = @"title"; sin embargo resulta que la subclasificación un UINavigationController partió de alguna manera y mi solución a que se iba a utilizar una categoría en vez de una subclase

0

Si su UIViewController es parte de un UITabController, a continuación, usted puede hacer:

self.tabBarController.title = sub.title; 
1

Es posible que esté presionando un UITabBarController en lugar de su controlador de vista normal. En este caso, navigationItem mostrará el título del controlador actual, el controlador de la barra de pestañas, aunque vea otra vista. Debería cambiar el título del controlador de la barra de pestañas para cambiar el texto que se muestra arriba.

self.tabBarController.title = @"Your title"; 
Cuestiones relacionadas