UITabBarController
UITabBarControllerクラスは並列的な画面遷移を管理するクラスです。
下右図のようにUITabBarControllerの下に画面が複数ぶら下がっているイメージです。
UITabBarControllerのクラス階層
生成
// 生成
UITabBarController *tab = [[UITabBarController alloc] init];
// 自身を管理しているUITabBarControllerを取得
self.tabBarController;
UITabBarControllerのプロパティ
プロパティ名/型 | 読専 | 説明 |
---|---|---|
delegate (UITabBarControllerDelegate) |
デリゲートを指定する (例)tab.delegate = self; |
|
selectedIndex (NSUInteger) |
選択中の画面のインデックス | |
selectedViewController (UIViewController) |
選択中の画面 | |
viewControllers (NSArray) |
管理している画面 | |
tabBar (UITabBar) |
○ | UITabBarを取得する |
items (NSArray) |
タブバーが管理するUITabBarItemのリストを取得する。 (UITabBarItemが格納されたNSArrayが返る) |
主要なプロパティのみ掲載しています。
上記「UITabBarControllerのクラス階層」にあるクラスのプロパティも使用できます。
UITabBarControllerのメソッド
メソッド名 | 説明 |
---|---|
-(void)setViewControllers: (NSArray *)viewControllers animated:(BOOL)animated |
画面を追加する ※下記例文1参照(viewControllersには、UIViewControllerのサブクラスの配列(NSArray)を渡す) |
主要なメソッドのみ掲載しています。
上記「UITabBarControllerのクラス階層」にあるクラスのメソッドも使用できます。
// (例文1)画面(view1, view2, view3)をタブバーに追加する
NSArray *views = [NSArray arrayWithObjects:view1, view2, view3 nil];
[tbc setViewControllers:views animated:NO];
※view1~3は、UIViewControllerのサブクラス。
UITabBarControllerDelegate
メソッド名 | 説明 |
---|---|
-(void)tabBarController: (UITabBarController*)tabBarController didSelectViewController: (UIViewController*)viewController |
タブが選択された時に呼び出される |
UITabBarController例文
// タブバーコントローラ例文
TabBarController *tbc = [[UITabBarController alloc] init];
UIView *view1 = [[UIView alloc] init];
UIView *view2 = [[UIView alloc] init];
NSArray *views = [NSArray arrayWithObjects:view1, view2, nil];
[tbc setViewControllers:views animated:NO];
[window addSubView:tbc.view];
[window makeKeyAndVisible];
※以下例文の変数「tbc」は、上記例文で生成しているtbcです。
// 1つめのタブのタイトルを"hoge"に設定する
UITabBarItem *tbi = [tbc.tabBar.items objectAtIndex:0];
tbi.title = @"hoge";
// 2つめのタブにバッジ"hoge"を表示する
UITabBarItem *tbi = [tbc.tabBar.items objectAtIndex:1];
tbi.badgeValue = @"hoge";
※バッジを消したい場合は、nilをセットすればOKです。
★その他例文
// 選択中のタブのタグを取得する
int tabNo = self.tabBarController.tabBar.selectedItem.tag;