2011年1月9日日曜日

iPhoneアプリ マルチビューアプローチの基本1

iPhoneアプリのマルチビューアプリを作る場合の基本を再確認したいと思います。(はじめてのiPhone 3プログラミングより)

1.アプリケーションの構成
画面数に応じ、コントローラ、nibファイルを作成する。アプリケーションデリゲートは1つのみ。


・MainWindow.xibには、File's Owner, First Responder, App Delegate, ViewControllerとMainWindow(Window)がある。

・ビュー表示を管理するコントロールクラス(ルートコントローラクラス)を作成する。
ルートコントローラクラスは、他のビューを取り込んで、ユーザの操作とともに該当するビュー(コンテントビュー)を表示する。
・コンテントビューの表示にあたって、ルートコントローラクラスは、ルートコントローラのサブビューとして表示するコンテントビューを配置する。変更の操作がされた場合には、現在表示しているビューコントーラを追い出し、操作に応じたビューコントローラを取り込む。

・ コンテントビューは、ビューコントローラ、nib、UIViewのサブクラスから成る。

2.実装

2.1 アプリケーションデリゲートの作成
・新規プロジェクトとして、Window-base Applicationを作成する。

2.2 ルートコントローラクラスの作成
・新規ファイルとして、UIViewController subclass を作成する(XIB user interfaceはチェックしない)

2.3 コンテントビューコントローラクラスとnibファイルの作成
・ルートコントローラクラスと同様に作成する。
・新規ファイルとして、User InterfaceからView XIBを選択し、xibファイルを作成する
  (XIB user Interface をチェックしてコンテントビューコントローラクラスを作成したほうがいいように思う)

2.4 アプリケーションデリゲートの修正
・Appdelegate.hにクラスの前方宣言で、ルートコントローラクラスを宣言、ルートコントローラクラスを定義し、アウトレット宣言する。

     #import< UIKit/UIKit.h >
      @class RootViewController;
      @interface name_Appdelegate:NSObject {
          UIWindows * window;
          RootView Controller *rootVieewController;
    }

     @property (nonatomic, retain) IBOutlet UIWindow *window;
     @property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
     @end

・Appdelegate.mにルートビューコントローラクラスをインポートし、ウインドウにAddViewする。

    #import "name_Appdelegate.h"
    #import "RootViewController.h"
    @implementation name_Appdelegate

    @synthesize window;
    @synthesize switchViewController;

-(void) applicationDidFinishLaunching:(UIApplication *) application{
     [ window addSubview : rootViewController.view];
     [ window makeKeyAndVisible ];
}

-(void) dealloc {
    [ window release ];
    [ rootViewController release ];
    [ super dealloc ];  
}

0 件のコメント:

コメントを投稿