何らかの理由で、テーブルビューのNSButtonCellが間違ったオブジェクトをパラメーターとして渡しています。クリックした後、NSButtonCellのタグを読み取ろうとしています。
これが私のコードの簡略版です:
- (int)numberOfRowsInTableView:(NSTableView *)aTableView {
return 3;
}
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
[aCell setTitle:@"Hello"];
[aCell setTag:100];
}
- (void)buttonClick:(id)sender {
NSLog(@"THE TAG %d",[sender tag]);
NSLog(@"THE TITLE: %@",[sender title]);
}
- (void)refreshColumns {
for (int c = 0; c < 2; c++) {
NSTableColumn *column = [[theTable tableColumns] objectAtIndex:(c)];
NSButtonCell* cell = [[NSButtonCell alloc] init];
[cell setBezelStyle:NSSmallSquareBezelStyle];
[cell setLineBreakMode:NSLineBreakByTruncatingTail];
[cell setTarget:self];
[cell setAction:@selector(buttonClick:)];
[column setDataCell:cell];
}
}
- (void)awakeFromNib {
[self refreshColumns];
}
コンソールからの結果は次のように述べています。
THE TAG: 0
-[NSTableView title]: unrecognized selector sent to instance 0x100132480
一見すると(少なくとも私にとっては)、これはタグが100であると言うべきですが、そうではありません。また(2番目のコンソール出力からわかるように)、「buttonClick」セレクターに送信されているパラメーターが正しくないようです。NSButtonCellを受信しているはずですが、NSTableViewを受信しています。