2007年8月30日木曜日

NSTableViewでのdoubleClickイベントの取得とカラム情報の取得

NSTableViewをエディットする上で一度,選択可能なパネルをだしてその結果を反映させたいと思いました.

まずKVCでいけるのかと思い調査.
Technical Q&A QA1472
Debugging NSTableView's "Action Invocation" binding
http://developer.apple.com/qa/qa2006/qa1472.html

なるほどNSTableVIewについないであるNSArrayControllerのBindingで
doubleClickTargetでセレクタ(メソッド)を
doubleClickArgumentで引数を指定するわけですな.

で,ArgumentになにができるかというとRow番号となるSelectedIndex, SelectedIndexsですな.
便利便利.

?おや?カラム情報になりそうな物は?…そんなの無さげです,
困った.結局KVCだけでは無理?みたいでNSTableViewのclickedColumnを利用するしかなさそう….

でイベントが起きるのはKVCに任せてtableのclickedColumnを別途見れば良いかと思ったのですがKVCでキックしたセレクタ内ではclickedColumnは-1を返すだけ.
結局KVC側の上記Bindを全て解除しNSTableViewのsetDoubleActionでセレクタを指定して対応しました.
(旧式?)


- (void)windowDidLoad {
[_table setDoubleAction:@selector(clickAction:)];
}
- (void)clickAction:(id)arg {
NSLog(@"%d %d", [table clickedRow], [table clickedColumn]);
}

ちなみにこの場合のargはNSTableViewである.

というわけでカラム情報を取得するのはKVCでは無理でした.という記録.(本当はできるのかしら?)

0 件のコメント: