2009年10月24日土曜日

UINavigationController の導入

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
(前回)Cocoa Touch の日々: NSFetchedResultsController を使って CoreData を表示する

一覧画面で項目を選択するとその詳細画面を表示するようにしたい。今まではメインのウィンドウに1つのビューコントローラを直接割り当てていたが、UINavigationController を導入して、画面を切り替えるようにする。

(参考)「はじめての iPhoneプログラミング」- 「第9章 ナビゲーション・コントローラとテーブルビュー」

アプリケーションデリゲートのアウトレットを今までのビューコントローラから、UINavigationController へ変更する。

OnLinerAppDelegate.h

#import

@class MainViewController;
@interface OneLinerAppDelegate : NSObject {
    UIWindow *window;
    UINavigationController *mainViewController;
    UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet MainViewController* mainViewController;
@property (nonatomicretainIBOutlet UINavigationController* navigationController;
@end



InterfaceBuilder を開き Navigation Controller を追加し、One Liner AppDelegate のアウトレットに接続する。従来あった MainViewController は削除する。

続いて UINavigationController の rootViewController に MainViewController を指定する。方法は、MainWindow.xib をリスト表示して Navigation Controller の下に現れる View Controller を書き換える。


後は AppDelegate の applicationDidFinishLaunching: このビューをウィンドウのビューとして設定すれば良い。


- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after application launch
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}



これで終わり。
実行するとこんな感じになる。



画面上部にナビゲーション用のバー("Root View Controller")が表示されるようになる。


- - - -
次は詳細画面を作り、そこで編集が行える様にする。
(続く)

0 件のコメント:

コメントを投稿