iPhoneアプリ開発の虎の巻
HOME > UITabBarController

UITabBarController

UITabBarControllerクラスは並列的な画面遷移を管理するクラスです。
下右図のようにUITabBarControllerの下に画面が複数ぶら下がっているイメージです。

タブバーコントローラ画面 タブバー概念図

UITabBarControllerのクラス階層

NSObjectUIResponderUIViewController ↑ UITabBarController

生成

// 生成
UITabBarController *tab = [[UITabBarController alloc] init];

// 自身を管理しているUITabBarControllerを取得
self.tabBarController;

UITabBarControllerのプロパティ

【UITabBarControllerの主要プロパティ】
プロパティ名/型 読専 説明
delegate
(UITabBarControllerDelegate)
デリゲートを指定する
(例)tab.delegate = self;
selectedIndex
(NSUInteger)
選択中の画面のインデックス
selectedViewController
UIViewController
選択中の画面
viewControllers
NSArray
管理している画面
tabBar
(UITabBar)
UITabBarを取得する
items
NSArray
タブバーが管理するUITabBarItemのリストを取得する。
(UITabBarItemが格納されたNSArrayが返る)

主要なプロパティのみ掲載しています。
 上記「UITabBarControllerのクラス階層」にあるクラスのプロパティも使用できます。

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

【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";

UITabBarItemタイトル

// 2つめのタブにバッジ"hoge"を表示する
UITabBarItem *tbi = [tbc.tabBar.items objectAtIndex:1];
tbi.badgeValue = @"hoge";
※バッジを消したい場合は、nilをセットすればOKです。

UITabBarItemバッジ


★その他例文

// 選択中のタブのタグを取得する
int tabNo = self.tabBarController.tabBar.selectedItem.tag;
totop