Dans mon application iPhone, je dispose d'une barre d'onglets commune avec les éléments suivants trois onglets qui est présenté sous plusieurs angles après avoir appuyé sur un bouton. L'approche que j'ai suivie est le flux de travail de l'application Tweetie, décrit dans Poste Robert Conn .
Notez que le contrôleur principal est un contrôleur de navigation ; la barre d'onglets est placée dans le fichier NIB d'un contrôleur de vue de la pile de navigation, et l'effet du passage d'un onglet à l'autre est traité dans une méthode déléguée 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
Puisque les vues de la barre d'onglets doivent être personnalisées en fonction du contrôleur de vues d'où provient l'application, j'ai fait ceci GameTabBarController
une classe parent avec ce fichier NIB qui ont la barre d'onglet. Ensuite, j'ai créé plusieurs classes enfants :
@interface FirstGameTabBarController : GameTabBarController {
...
}
@interface SecondGameTabBarController : GameTabBarController {
...
}
...
Mon problème est que dans certaines des classes enfants, je voudrais supprimer le troisième onglet du fichier NIB associé à la classe parent. Mais comme il n'y a pas de UITabBarController impliqué, je ne peux pas suivre les approches typiques que l'on peut trouver sur le web, c'est-à-dire supprimer le contrôleur de vue de l'élément de la barre d'onglets.
Comment puis-je faire ça ? Est-il possible de supprimer des éléments qui ont été précédemment ajoutés dans un fichier NIB ?
Merci !
UPDATE La solution était si facile... Je dois juste remplacer les éléments de la barre d'onglets, au lieu des contrôleurs de vue :
NSMutableArray *items = [NSMutableArray arrayWithArray:self.tabBar.items];
[items removeObjectAtIndex:2];
[self.tabBar setItems:items];
Merci à @Praveen S de m'avoir indiqué la bonne direction.