2011年5月22日日曜日

[iOS] UINavigationControllerで階層的に画面を切り替える (2)

前回、UINavigationControllerで階層的に画面を切り替える

【開発環境】Xcode4、iOS4.3

ナビゲーションコントローラで新しくビューコントローラを開いてみます。ここでは、前回のテーブルビューコントローラの項目を選択したときに、再度テーブルビューコントローラを開くようにしてみます。

1.テーブルビューコントローラの項目を選択したときの処理を書く。[CourseListViewController.m]を開きます。CourseListViewController(テーブルビューコントローラ)のインスタンスを作成して、UINavigationControllerの[pushViewController]メソッドに渡すことで、新しくビューコントローラを開くことができます。
・ナビゲーションコントローラは、ビューコントローラの[navigationController]プロパティから参照できます。
・[animated]はアニメーションさせながら切り替えるかの属性です。
#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // (サンプル) 同じビューコントローラを新規に作成して開く
    CourseListViewController *viewCtrl = [[[CourseListViewController alloc] init] autorelease];
    [self.navigationController pushViewController:viewCtrl animated:YES];
}



2.あとナビゲーションバーに表示されるビューコントローラのタイトルを”Root View Controller"から変更する。[viewDidLoad]の中で、[title]プロパティに新しいタイトル名を代入します。
#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
 
    // ビューコントローラのタイトルを付ける
    self.title = @"Course List";
 
    // 配列に文字列一覧を格納する
    item_ = [[NSArray alloc] initWithObjects:
                    @"DATA 1", @"DATA 2", @"DATA 3",
                    @"DATA 4", @"DATA 5", nil];
 
}


3.それでは、シミュレータを起動してみる。次のことを確認してみてください。
・タイトルが変わっていること
・項目を選択したときに、アニメーションして画面が変わること
・新しい画面のナビゲーションバーにあるボタンをクリックすると画面が戻ること




0 件のコメント:

コメントを投稿