По какой-то причине 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, но это не так.
Кроме того (как видно из второго вывода консоли), похоже, что параметр, отправляемый в селектор «buttonClick», неверен, я считаю, что он должен получать NSButtonCell, но он получает NSTableView.