在我的iPhone應用程序中,我有一個共同的標籤欄三個標籤這是從幾個視圖後按下一個按鈕後呈現。我遵循的方法是Tweetie應用程序的工作流程,如Robert Conn post中所述。如何以編程方式刪除在父類NIB文件中創建的標籤欄項目?
請注意,主控制器是一個導航控制器;標籤欄被放置在導航堆棧的視圖控制器的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代表指着我的權利方向。
這仍然適用於iOS11,不像其他一些醜陋的黑客。^_ ^ – 2017-09-29 00:22:42