出于某种原因,我的表格视图的 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。