概要 † ¶
XCode 3用の説明を探すことができなかったので、手探りでCocoa Bindingのサンプルを作成しました。
Introduction to Developing Cocoa Applications Using Bindings: A Tutorial をベースにしています。 詳細は元記事読んでね。
手順 † ¶
- XCodeを起動。
- 新規プロジェクトを作成。
- テンプレートはApplication > Ccoa Applicationを選択。
- Modeと呼ばれるものを作成。
- プロジェクトに新規ファイルを追加。ファイル名はConvModel?とした。
- 入力された為替レート、変換元の金額を保持するためのフィールドと
レートを元に変換後の金額を計算するメソッドを定義する。ConvMode?.hを開き、以下の様に記述する。
#import <Cocoa/Cocoa.h> @interface ConvModel : NSObject { float _amount; float _rate; } -(float)convert; @end
- 変換後の金額を計算するメソッドを実装する。ConvModel?.mを開き、以下の様に記述。
#import "ConvModel.h" @implementation ConvModel -(float)convert { return _amount * _rate; } @end
- 変換後の金額は、為替レート、変換元の金額が入力されたら、自動的に計算させてやります。
そのための仕掛けを、ConvModel?.mに書き足してあげます。+(void)initialize { [ConvModel setKeys: [NSArray arrayWithObjects:@"amount", @"rate", nil] triggerChangeNotificationsForDependentKey:@"convert" ]; }
- プロジェクトファイルからMeinMenu?.nibを開き、Interface Builder(以下IB)を起動する。
- メニューより、Window > Document Infoを選択。
- Cocoa Bindingを使用するため、Deployment TargetをMac OS X 10.3に変更します。
- ウインドウに、キャプションとなるLabelを3つ、入力フィールドとしてTextField?を2つ、変換結果表示先のLabel1つ貼ります。
- XCodeで作成したConvModel?をIBに追加します。
- Colass IdentitのClass欄にConvModel?と書きます。
- UIとConvController?間でBindingの設定を行います。
- メニューより、Tools > Bindings Inspectorを選択し、インスペクタを切り替えます。
- 為替レートのテキストフィールドを選択し、インスペクタで、
- (1)Bind toにチェックを付ける。
- (2)対象のコントローラを選択する。今回はConvController?を選択。
- (3)Controller Keyは、selectionと入力。おそらく規定値でしょう。
- (4)Model Key Pathに、rateと入力。
- 同様に変換元金額のテキストフィールドについても、
- (1)から(3)は同じ
- (4)はamountと入力
- 変換結果表示先のラベルは、
- (1)から(3)は同じ
- (4)はconvertと入力
- MeinMenu?.nibを保存し、XCodeに戻り、コンパイル。