2007年7月21日土曜日

KVC : で,テーブルの行選択の内容を調べたい

このエントリーには間違い(NSTableViewをNSTableと書いたりとかその他色々(2chで指摘されてたorz.))が含まれています.新しいエントリーを参照してください.
NSArrayController(NSTableView)の選択結果の取得について
http://edotprintstacktrace.blogspot.com/2007/11/nsarraycontrollernstableview.html

ーー
さてテーブルが出来ると次にテーブルの状態(選択された行)を知りたくなります.
これもKVCで取得できます.

テーブルの状態ですから本来はViewのNSTableに聞くべきですが
これをNSArrayControllerにつないであげるとNSArrayControllerを観察するだけで
選択された行がわかります.
NSTableのInspector,"bindings","Controller Content Parameters"の"selectionIndexes"を選びます.
で"bind to"としてNSArrayControllerとなるアイテムを選択し,"Controller Key"を"selectionIndexes"とします.

ここからは二通り,
まずコード側でNSArrayControllerを取得している場合をみます.
これはNSArrayControllerのselectionIndexesを呼べば解決することがわかります.
戻り値はNSIndexSetです.

次にKVCの場合です.
NSArrayControllerのInspectorのbindings中から
"Controller Content Parameters"の"selectionIndexes"を選びます.
これは前述のNSTableのselectionIndexesと同じです.
これを任意オブジェクト("bind to"で設定)のsetter(もしくはインスタンス変数)に
(設定すべきメソッドや変数名を"Model Key Path"に設定)設定@される@ことになります.

でこの値をみてあげれば出来上がり.簡単(…でもないかな.).

2 件のコメント:

匿名 さんのコメント...

こんにちはdoubleclicktargetでググってたら、ここにたどり着きました。
Cocoa自体の超初心者です。
参考のコードを載せていただけると、もっと勉強になりますのでよろしくお願いします。
Cocoa関係の投稿はかなり参考にさせていただいてます。

pg さんのコメント...

"匿名"さん.コメントありがとうございます.
なにかのお役にたてるのであれば幸いです.
(我流なので間違っていたらすみません.
 ご指摘いただければ幸いです.)

"参考のコードを載せていただけると..."というのは具体的にこのエントリーでよかったのでしょうかね.
ちょっと後で追記してみようかな.