2010年1月4日月曜日

Cocoa Binding 1

スライダー+テキストフィールド+NSObjectControllerによる
Cocoa Bindingの手順(環境:XCode3.1, Interface Builder3.1)

Cocoa BindingはMVC(Model, View Controller)モデルに基づいている。Viewは通常ウィンドウ内に配置されているボタン/テキストフィールド/スライダーなどのユーザインターフェイスである。Modelは値を実際に利用する本体である。ControllerはViewとModelの仲介役を果たし、データの相互設定を行う。以下、Cocoa Bindingによるスライダー/テキストフィールド及びモデルオブジェクトとのデータ共有の例を示す。

あらかじめInterface Builder上で以下のクラスインスタンスが生成されているとする。
・NSObjectController(MVCコントローラ部)
・NSSlider(スライダー、MVCビュー部)
・NSTextField(テキストフィールド、MVCビュー部)
・CocoaBindingTest(MVCモデル部(名称は任意))

---------------------------------------------

■CocoaBindingTestの設定(XCode上で)
1.CocoaBindingTestにインスタンス変数id boundDataを設定
スライダー/テキストフィールド/モデルで値を共有するための変数(変数名は任意)。ビュー/モデル双方から値を操作/取得するために必須。

■NSObjectControllerの設定(Interface Builder上で)
1.NSObjectControllerを選択→Connectionsインスペクタを開く
2.contentアウトレットにCocoaBindingTestを接続
ここではNSObjectControllerにモデルオブジェクトを割り当てている。NSObjectControllerのcontentアウトレットにモデルターゲットであるCocoaBindigTestを接続することで可能となる。

■テキストフィールドの設定(Interface Builder上で)
1.テキストフィールド選択→Bindingsインスペクタを開く
2.Valueタブ→Bind toにチェック→Object Controllerを選択
3.Controller Key→selection
4.Model Key Path→boundData(直接入力)
ここでは、テキストフィールドのvalue値を、コントローラ及びコントローラの先にあるモデルの変数に対して割り当て(バインディング)を行っている。Controller Keyにはコントローラ(ここではNSObjectController)がモデルオブジェクトを指し示すselelctionを選択。Model Key Pathにはコントローラの先にあるモデルオブジェクト(ここではCocoaBindingTest)のインスタンス変数であるboundDataを設定する。

■スライダーの設定(Interface Builder上で)
1.スライダー選択→Bindingsインスペクタを開く
2.Valueタブ→Bind toにチェック→Object Controllerを選択
3.Controller Key→selection
4.Model Key Path→boundData(直接入力)
ここでは、スライダーのvalue値を、コントローラ及びコントローラの先にあるモデルの変数に対して割り当て(バインディング)を行っている。他、テキストフィールドと同じ。

以上でXCodeでビルド後、スライダーを動かすとテキストフィールド内の文字が連動する。逆にテキストフィールド内の文字を変更すると、スライダーが連動する。また、任意のタイミングでCocoaBindingTestのboundDataを調べると、その値を取得できる。


以上

参考:
例:バインディングを使った通貨両替計算機
中心となるクラスとプロトコル

0 件のコメント: