Dentro de mi aplicación de iPhone tengo una barra de pestañas común con tres pestañas que se presentan desde varias vistas después de presionar un botón. El enfoque que seguí fue el flujo de trabajo de la aplicación Tweetie, que se describe en Robert Conn post.¿Cómo eliminar mediante programación un elemento de la barra de pestañas creado en el archivo NIB de la clase principal?
Tenga en cuenta que el controlador principal es un controlador de navegación; la barra de pestañas se coloca en el archivo NIB de una controladora de vista de la pila de navegación, y el efecto de alternar entre pestañas se maneja en un delegado método didSelectItem.
@interface GameTabBarController : UIViewController<UITabBarDelegate> {
UITabBar *tabBar;
UITabBarItem *lastGameTabBarItem;
UITabBarItem *previousGamesTabBarItem;
UITabBarItem *myBetsTabBarItem;
NSArray *viewControllers;
UIViewController *currentViewController;
}
@implementation GameTabBarController
...
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
UIViewController *viewController = nil;
// Get the view controller linked to the tab bar item pressed
...
// Switch to the view
[self.currentViewController.view removeFromSuperview];
[self.view addSubview:viewController.view];
self.currentViewController = viewController;
}
...
@end
Desde el punto de vista de la barra de pestañas debe ser personalizado de acuerdo con el controlador de vista de la aplicación viene, he hecho de esto una clase padre GameTabBarController
con ese archivo SEMILLA que tiene la barra de pestañas. A continuación, he creado varias clases de niños:
@interface FirstGameTabBarController : GameTabBarController {
...
}
@interface SecondGameTabBarController : GameTabBarController {
...
}
...
Mi problema es que en algunas de las clases de los niños me gustaría quitar la tercera pestaña del archivo SEMILLA asociado con la clase padre. Pero como no hay UITabBarController involucrado, no puedo seguir los enfoques típicos que puede encontrar en la web, es decir, eliminar el controlador de vista del elemento de la barra de pestañas.
¿Cómo puedo hacer eso? ¿Es posible eliminar elementos que se han agregado previamente en un archivo NIB?
Gracias!
ACTUALIZACIÓN La solución fue tan fácil ... Tengo sólo para reemplazar los elementos de la barra pestaña, en lugar de los controladores de vista:
NSMutableArray *items = [NSMutableArray arrayWithArray:self.tabBar.items];
[items removeObjectAtIndex:2];
[self.tabBar setItems:items];
Gracias a @Praveen S por señalarme en la derecha dirección.
Esto todavía funciona en iOS11, a diferencia de algunos otros hacks feos.^_ ^ –