Establezca el título de UITabBarItem mediante progtwigción?

Mi aplicación se basa en una architecture de barra de tabs. Para tener una mecánica de internationalization fácil, no escribo ninguna cadena en files XIB. viewdidload permite cambiar programáticamente las cadenas en las vistas.

Cuando se inicia mi aplicación, puedo ver las 4 tabs. Pero, de hecho, solo el primero carga su controller de vista. Los demás esperan que el usuario haga clic para cargar. El título de las tabs se puede cambiar usando [self setTitle: @ "Mouhahaha"]; en viewDidLoad del controller de vista cargado.

Si quiero mantener disponible mi mecánica de internationalization, no configuro en mi XIB el nombre de los elementos de la barra de tabs. Pero, al comienzo, todos los controles de vista de pestaña no están cargados, tengo títulos en blanco para algunas tabs. El título derecho 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 sugerencias?

Muchas gracias.

Kheraud

Todo lo que necesita hacer es hacer una instancia de UITabBarController, luego asignar cualquier punto de vista que desee en él, luego establecer las vistas UITabBarController. Asegúrese de que TabBarController sea el visible. También asegúrese de que cualquier viewControllers que desee en su barra de tabs 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 controller asignado.

Alternativamente, puede cambiar la forma en que su ApplicationDelegate configura TabBarController, pero no voy a entrar en eso.

Espero que esto ayude

mi método preferido de hacer esto programáticamente junto con el guión gráfico es hacer una subclass de UITabBarController , hacer que mi escena de controller de barra de tabs en mi storyboard use la nueva subclass (con 3 relaciones UIViewController desde el controller de barra de tabs al controller de vista deseado en el caso a continuación) 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); }