メインコントローラーとして UITabBarController を持つアプリケーションがあります。
ユーザーがボタン(タブバーではなく、他のボタン)をタップすると、新しい UIViewController を UITabBarController 内に追加して表示したいのですが、新しい UITabBarItem をタブバーに表示したくありません。そのような行動を達成する方法は?
tabBarController.selectedViewController
配列にないビュー コントローラにプロパティを設定しようとしましtabBarController.viewControllers
たが、何も起こりません。View ControllerをtabBarController.viewControllers
配列に追加すると、新しいアイテムがタブバーに自動的に表示されます。
アップデート
Levi のおかげで、タブ バー コントローラーを拡張して、 に存在しないコントローラーを処理できるようになりました.viewControllers
。
@interface MainTabBarController : UITabBarController
/**
* By setting this property, tab bar controller will display
* given controller as it was added to the viewControllers and activated
* but icon will not appear in the tab bar.
*/
@property (strong, nonatomic) UIViewController *foreignController;
@end
#import "MainTabBarController.h"
@implementation MainTabBarController
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
self.foreignController = nil;
}
- (void)setForeignController:(UIViewController *)foreignController
{
if (foreignController) {
CGFloat reducedHeight = foreignController.view.frame.size.height - self.tabBar.frame.size.height;
foreignController.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, reducedHeight);
[self addChildViewController:foreignController];
[self.view addSubview:foreignController.view];
} else {
[_foreignController.view removeFromSuperview];
[_foreignController removeFromParentViewController];
}
_foreignController = foreignController;
}
@end
このコードは、「外部」コントローラーのビュー サイズを正しく設定し、ユーザーがタブ バーで項目を選択するとそれを削除します。