ラジオインターフェイスにビューを追加する

前回:ラジオインターフェイスを実装するの続き。

概要

    • TabBarに追加したいUIViewControllerを配列にし、UITabViewControllerに登録する。
    • UIViewControllerのインスタンス変数、title と tabBarItem を設定しておくことで、画面表示時にTabBarにそのtitleとimageが表示される。
    • 今回は、SimpleWindowというNIBファイルを作成し、SimpleViewControllerをその管理クラスにする。

1. Xcode

  • Xcodeの新規ファイルから UIViewController Subclass を選択し、名前をSimpleViewControllerとして保存する。
  • グループとファイルで、ViewControllersというグループを作りそこのSimpleViewController.h/.mを移動しておくと見やすくなる。
SimpleViewController.m

シグネチャ:initWithNibName:bundle: のコメントを無効にし、次のように編集する

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
        self.title = @"Simple";    // 追加
        self.tabBarItem.image = [UIImage imageNamed:nil];    // 追加(とりあえず画像なし)
    }
    return self;
}

applicationDidFinishLaunching:でこのメソッドがコールされ、インスタンスが生成される。

2. Interface Builder

  • Interface BuilderのNew...メニューから、Cocoa TouchのViewを選択し、SimpleWindowとして保存する。
  • 保存場所をプロジェクトフォルダ直下にし、プロジェクトに登録しておくこと。
SimpleWindow.xib
    • File's Owner の Class Identity を Xcode で作成した SimpleViewController にする
    • File's Owner の viewアウトレットを、view に接続する
    • viewオブジェクトを開き、viewウィンドウを表示する
      • Simulated Bar Metrix の Status Bar をGray、Bottom Bar をTab Bar にする
      • viewに Label をドラッグ&ドロップで配置し、Text に Simple View と設定する
    • 最後に保存(閉じてもよい)

3. Xcode

  • AppDelegate.m で SimpleWindow のインスタンスを4つ用意し、TabBarController に追加する。
AppDelegate.m
#pragma mark UIApplicationDelegate Protocol
- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // SimpleViewControllerのインスタンスを4つ生成
    SimpleViewController *aViewController1 = 
        [[SimpleViewController alloc] initWithNibName:@"SimpleWindow" bundle:[NSBundle mainBundle]];
    SimpleViewController *aViewController2 = 
        [[SimpleViewController alloc] initWithNibName:@"SimpleWindow" bundle:[NSBundle mainBundle]];
    SimpleViewController *aViewController3 = 
        [[SimpleViewController alloc] initWithNibName:@"SimpleWindow" bundle:[NSBundle mainBundle]];
    SimpleViewController *aViewController4 = 
        [[SimpleViewController alloc] initWithNibName:@"SimpleWindow" bundle:[NSBundle mainBundle]];

    // AppDelegateのインスタンス変数tabBarControllerにSimpleViewControllerを追加する
    NSArray *aArray = [NSArray arrayWithObjects:aViewController1, aViewController2, aViewController3, 
                                                                  aViewController4, nil];
    tabBarController.viewControllers = aArray;

    // 破棄
    [aViewController1 release];
    [aViewController2 release];
    [aViewController3 release];
    [aViewController4 release];
    [aArray release];

    [window addSubview:[tabBarController view]];

    // Override point for customization after application launch
    [window makeKeyAndVisible];
}
  • 実行

次のように表示されればOK。

参考になった情報
iPhone OS View Controller プログラミングガイド.pdf