0.目的:"テーブルの行に対応するオブジェクト"がある場合
これらをテーブルに一覧表示したい.
戦略:・"テーブルの行に対応するオブジェクト"をNSMutableArrayに詰め込んで
NSArrayControllerとつないであげる.
・テーブルのカラムに表示する値は"テーブルの行に対応するオブジェクト"が
有する"インスタンス変数"もしくは"値の取得メソッド"から得られるものとする.
・詰め込むNSMutableArrayはgetter,setterを用意するか,インスタンス変数名を用意します.
gtter,setterについてはObjective-Cでよくあるのは(?)以下のようなモノです
インスタンス変数として'_'から始まる値,
例: _key
このgetterとしてインスタンス変数から'_'のないもの
例: key
このsetterとしてインスタンス変数から'_'のないものにsetを付け足したもの
例: setKey
(あれ?大文字小文字はKVCとしてはどう扱っているんだろう?setKeyとsetkeyは同じ?)
"Model Key Path"では上記例のkeyを指してあげます.
これ以外でも良いようです(変数名はkeyでも良いようです).
1.テーブル,ArrayControllerを作る.
InterfaceBuilderにてNSTableを配置, NSArrayControllerをInstanceの中に用意する.
(このときNSArrayControllerにはわかりやすい名前を設定すると良い)
2.NSTableの設定
Inspectorにて"bindings"を選び,"TableContent"の"content"を選ぶ.
"Bind to"に1.で用意したNSArrayControllerを
"Controller Key"に"arrangedObjects"とする.
3.各NSTableColumnを設定
テーブルのカラムを何度かクリックしてInspectorのタイトルがNSTableColumnになるようにする.
Inspectorにて"bindings"を選び,"Value"の"value"を選ぶ.
"Bind to"に1.で用意したNSArrayControllerを
"Controller Key"に"arrangedObjects"を
"Model Key Path"にテーブル要素になるオブジェクトにある
"値の取得,設定メソッド(getter,setter)"もしくは"インスタンス変数"を選ぶ.
4,NSArrayControllerの設定
Inspectorにて"bindings"を選び,"Controller Content"の"contentArray"を選ぶ.
"Bind to"に戦略に書いたNSMutableArrayが取得できるオブジェクト,
"Controller Key"は空に
"Model Key Path"にはNSMutableArrayのgetter,setterとなるキー値(もしくはインスタンス変数名)を設定する.
これで仕掛けはできました.が,NSMutableArrayにいくら詰め込んでも値が増えません.
(正確にはうまく更新されない.)
詰め込むためにはNSArrayControllerを取得してaddObject,addObjectsを利用するのが正しいようです.
…あってるかなー.なんか間違っているのかなぁ…
#ちなみにNSMutableArrayを保存すればSaveされるわけです.
…こうやって書くと全然,簡単でないな.
参考:
http://homepage.mac.com/t_yamane/prog/DocBaseTest2/page.html
ありがとうございます.
0 件のコメント:
コメントを投稿