2009年9月7日月曜日

iPhone:Xib/Nibファイル(その2) カスタムクラスのインスタンスをNibファイルに追加する

アプリケーションが複雑になってくると、全ての処理をXXXViewControllerに書くのではなく、カスタムクラスを作成することになります。

自分でカスタムクラスを作成し、そのクラスのインスタンスをNibファイルに入れる場合、Nibファイルによるインスタンスの初期化がどんな順番で実行されるかを気にして作成する必要があります。

作成したカスタムクラスをNibに追加する手順はこちらを参照してください。
InterfaceBuilderでカスタムクラスインスタンスを追加する場合、まずカタログから、追加したいクラスのスーパークラスを追加して、その後インスペクタウィンドウのIdentityタブでクラスを変更します。

UIApplicationもしくはUIViewControllerのサブクラスがNibに定義されたインスタンスを生成する手順は以下のようになります。


1.全てのインスタンスをallocする
2.全てのインスタンスのinitを実行する
3.全てのインスタンスに属性を入力(Outlet、Action、各種のパラメータ)する
4.全てのインスタンスのawakeFromNibを実行する

カスタムクラスを新規作成する場合、インスタンスの初期化処理は、init もしくは awakeFromNib 関数をオーバーライドします。
initがコールされる時点ではまだ他のインスタンスとの関連(Outlet)は出来ていないため、以下のような使い分けをします。
  • init ・・自分のインスタンスの初期化処理
  • awakeFromNib ・・Outletに接続されているインスタンスに対する処理
UIViewサブクラスのサブクラスを作成する
(1)Classesのコンテキストメニューで追加>新規ファイル
Objective-C Classを選択、リストからSubclass of UIViewを選択する
(2)Headerファイルを編集して継承元クラスを書く 例えば、UIImageViewに変更する
(3)IBでインスタンスを追加する
 スーパークラスをNibに追加してから、InspetorウィンドウのIdentityタブを選択し、Class Identityを編集する

0 件のコメント:

コメントを投稿