2011-06-15 29 views
6

Mi aplicación se basa en una arquitectura de barra de pestañas. Para tener una mecánica fácil de internacionalización, no escribo ninguna cadena en archivos XIB. viewdidload permite cambiar programáticamente las cadenas en las vistas.Establecer título UITabBarItem programmatically?

Cuando se inicia mi aplicación, puedo ver las 4 pestañas. Pero, de hecho, solo el primero carga su controlador de visualización. Los otros esperan que el usuario haga clic para que se carguen. El título de las pestañas se puede cambiar utilizando [self setTitle: @ "Mouhahaha"]; en viewDidLoad del controlador de vista cargado.

Si quiero mantener mi mecánica de internacionalización disponible, no configuro en mi XIB el nombre de los elementos de tabbar. Pero, como al principio, no se cargan todos los controladores de vista de pestañas, tengo títulos en blanco para algunas pestañas. El título correcto se establece solo cuando el usuario hace clic en la pestaña.

Estoy buscando una manera de establecer este título programáticamente para cada tabbaritem. ¿Tienes pistas?

Muchas gracias.

kheraud

Respuesta

1

Todo lo que necesita hacer es realizar una instancia de UITabBarController, a continuación, alloc cualquier punto de vista que desee en ella, a continuación, establecer los puntos de vista UITabBarController. Asegúrese de que su TabBarController es el que está visible. También asegúrese de que cualquier viewControllers que desee en su barra de pestañas se esté importando con #import.

UITabBarController *c = [self tabBarController]; 
SecondViewController *s = [[SecondViewController alloc] init]; 
[s setTitle:@"Whatever"]; 
c.viewControllers = [NSArray arrayWithObjects:self, s, nil]; 
[s release]; 

Ponga esto en el método viewDidLoad del primer controlador asignado.

Alternativamente, podría cambiar la forma en que su ApplicationDelegate configura el TabBarController, pero no entraré en eso.

espero que esto ayude

+0

funciona pero es muy complejo sólo para cambiar algunas etiquetas ... supongo que Apple no quiere que accedemos a la tabbaritem – iwalktheline

+0

Bueno, comparado con algunos de t Las otras cosas que hacen, esto es un juego de niños :-) –

+0

¿Qué pasa si hay NavigationViewController en lugar de ViewController? – dreamBegin

2

mi método preferido de hacer esto mediante programación junto con el guión gráfico es hacer una subclase de UITabBarController, tienen mi escena controlador de la barra de pestañas en mi guión gráfico utilizar la nueva subclase (con 3 UIViewController relaciones de la controlador de barra de pestañas para el controlador de vista deseado en el caso más adelante), y luego anular viewWillAppear:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    NSArray* titleKeys = [NSArray arrayWithObjects:@"top places", 
                @"localizablekey1", 
                @"localizablekey2", 
                @"localizablekey3", 
                nil]; 
    [super viewWillAppear:animated]; 
    int count = 0; for (UIViewController* viewController in self.viewControllers) 
     viewController.tabBarItem.title = NSLocalizedString([titleKeys objectAtIndex:count++], nil); 
} 
Cuestiones relacionadas