He configurado un UITabBarController con dos pestañas, uno es un UIViewController simple y el otro es un UINavigationController que usa un segundo UIViewController como su controlador raíz (esto se usará más adelante para configurar un UITableView). Mi pregunta es con respecto a nombrar las pestañas (es decir, establecer el título de cada UITabBarItem)Establecer el título UITabBarItem desde UINavigationController?
Para la primera pestaña (UIViewController simple) he agregado lo siguiente (ver a continuación) a los controladores -init método.
// FROM -[MapController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [self tabBarItem];
[tabBarItem setTitle:@"ONE"];
}
return self;
}
Para la otra pestaña que he agregado (ver a continuación) a la segunda controladores init (rootController).
// FROM -[TableController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [[self navigationController] tabBarItem];
[tabBarItem setTitle:@"TWO"];
}
return self;
}
¿Estoy estableciendo el segundo título tabBarItem en el lugar correcto en la actualidad no está mostrando, cuando corro la aplicación de la primera pestaña dice "UNO", el segundo está en blanco. También tabBarItem (arriba) muestra nulo cuando imprimo el valor o miro a través del depurador.
EDIT_001: Añadido código completo de AppDelegate
que puede ajustar correctamente el UITabBarItem desde dentro de la AppDelegate cuando por primera vez crear los controladores, listos para añadir a la UITabBarController. Pero realmente quería hacer esto en el controlador individual, en sus métodos de pulcritud.
// UITabBarController
UITabBarController *tempRoot = [[UITabBarController alloc] init];
[self setRootController:tempRoot];
[tempRoot release];
NSMutableArray *tabBarControllers = [[NSMutableArray alloc] init];
// UIViewController ONE
MapController *mapController = [[MapController alloc] init];
[tabBarControllers addObject:mapController];
[mapController release];
// UITableView TWO
TableController *rootTableController = [[TableController alloc] init];
UINavigationController *tempNavController = [[UINavigationController alloc] initWithRootViewController:rootTableController];
[rootTableController release];
[tabBarControllers addObject:tempNavController];
[tempNavController release];
[rootController setViewControllers:tabBarControllers];
[tabBarControllers release];
[window addSubview:[rootController view]];
[window makeKeyAndVisible];
EDIT_002: Solución hasta ahora, Actualizar UITabBarItems en delegado de la aplicación, por ejemplo,
// TABLE CONTROLLER
TableController *tableController = [[TableController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableController];
[tableController release];
[tabBarControllers addObject:navController];
UITabBarItem *tabBarItem_002 = [navController tabBarItem];
[tabBarItem_002 setTitle:@"TWO"];
[tabBarItem_002 setImage:[UIImage imageNamed:@"GT_TWO.png"]];
[navController release];
EDIT_003: es que hay una manera de establecer la UITabBarItem en el UINavigationController o es el delegado (como parece) realmente el mejor lugar para hacerlo.
self.navigationController.tabBarItem = tabBarItem es lo que funcionó para mí en caso de que alguien quiera probar una solución diferente. – Rabiees