FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


NSTableViewに置いたNSPopUpButton等の変化時にどの行のボタンなのか得る

NSTableViewにNSPopupButtonを置く
↑これの続き。
NSTableViewに置いてるcheckboxやpopup buttonを変更した時(popup buttonだと変更しなくても)、メソッドがコールされるようにしてるけど、実はどの行に対するアクションなのかがわからない。
bindingで全ての状態がわかるので、調べればわかるといえばわかるのだけど、、、なんとも面倒だ。
やっぱりどの行のNSPopUpButtonオブジェクトやNSButtonのチェックボックスが変更されたのかを知りたい。

調べるとNSTableViewクラスに
- (NSInteger)rowForView:(NSView *)view;
というメソッドがあってこれを使えばよい。

storyboardでNSTableViewに置いたボタンからコード側にactionをつなぐとすると、そのメソッドはこれらのような感じになる↓
-(IBAction)tappedCheckbox:(id)sender
{
    NSButton *checkbox = (NSButton *)sender;
    NSInteger row = [tableView rowForView:checkbox];
    NSLog(@"row=%ld",row);
}

-(IBAction)tappedPopUpButton:(id)sender
{
    NSPopUpButton *button = (NSPopUpButton *)sender;
    NSInteger row = [tableView rowForView:button];
    NSLog(@"row=%ld",row);
}
これでどの行に対するアクションなのか知ることができる。

なお
IBOutlet NSTableView *tableView;
↑このようにtableViewはNSTableViewオブジェクトで、storyboardから参照を持ってきてる。

<< iOSアプリ赤ちゃんの成長グラフver2.3(ARKitで身長計測機能の追加)が公開  TopPage  符号なしcharと浮動小数点数を持つバイナリファイルをObjective-Cで保存しPythonで読み込む >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1233-132af2a0




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad