この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
iOS アプリでよく見る画面下部のタブバーは、基本的に固定した項目を並べることが多いです。
タブの項目は5個を超えると右端が「More」になり、その先がリストになります。
今回紹介する Tips はタブの項目を動的に追加する方法です。
上記のオレンジ枠の「History」を追加してみます。
New Project の Tab Bar Application ひな形でプロジェクトを生成します。
MainWindow.xib を下記のように項目を増やしておきます。
次に追加する項目の ViewController である。HistoryViewController クラスを生成します。
New File で Cocoa Touch を選び、UIViewController subclass で生成します。
生成された HistoryViewController.m の initWithNibName:bundle: メソッドをオーバーライドして、
タブバー項目を生成する処理を追加します。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.title = @"History";
UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemHistory tag:0];
self.tabBarItem = tabBarItem;
[tabBarItem release];
}
return self;
}
アプリケーションデリゲートクラスの application:didFinishLaunchingWithOptions: メソッドで、
タブ項目を追加してみます。tabBarController の viewControllers プロパティにはタブ項目のそれぞれの
コンテンツとなるUIViewController のインスタンスが格納されています。
この配列に HistoryViewController のインスタンスを追加して再びセットします。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Add the tab bar controller's current view as a subview of the window
NSArray *vc = self.tabBarController.viewControllers;
NSMutableArray *nvc = [NSMutableArray arrayWithArray:vc];
HistoryViewController *newVC = [[HistoryViewController alloc] initWithNibName:@"HistoryViewController" bundle:nil];
[nvc addObject:newVC];
[newVC release];
[self.tabBarController setViewControllers:nvc];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
以上の追加処理を条件分岐内に行えば、必要に応じてコンテンツを増やすことができます。