В моем приложении для iPhone у меня есть общая панель вкладок с тремя вкладками , которая отображается в нескольких видах после нажатия кнопки. Подход, который я использовал, был рабочим процессом приложения Tweetie, описанным в Пост Роберта Конна .
Обратите внимание, что основным контроллером является контроллер навигации; панель вкладок помещается в NIB-файл контроллера представления стека навигации, а эффект переключения между вкладками обрабатывается методом делегата 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
Поскольку представления панели вкладок должны быть настроены в соответствии с контроллером представления, из которого пришло приложение, я сделал этот GameTabBarController
родительским классом с этим файлом NIB, имеющим панель вкладок. Затем я создал несколько детских классов:
@interface FirstGameTabBarController : GameTabBarController {
...
}
@interface SecondGameTabBarController : GameTabBarController {
...
}
...
Моя проблема в том, что в некоторых дочерних классах я хотел бы удалить третью вкладку файла NIB, связанного с родительским классом. Но так как UITabBarController не задействован, я не могу следовать типичным подходам, которые вы можете найти в Интернете, то есть удалить контроллер представления элемента панели вкладок.
Как я могу это сделать? Можно ли удалить элементы, ранее добавленные в файл NIB?
Спасибо !!
UPDATE
Решение было таким простым ... Мне нужно просто заменить элементы панели вкладок вместо контроллеров представления:
NSMutableArray *items = [NSMutableArray arrayWithArray:self.tabBar.items];
[items removeObjectAtIndex:2];
[self.tabBar setItems:items];
Спасибо @Praveen S за указание в правильном направлении.