我有一个包含4列的tableview。第一个有一些文本,另外三个是复选框 我需要在一个特定行中禁用3个复选框中的2个。我将行号保留在NSInteger变量上。
我已实施:
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
我检查列标识符以确定我是否在右列,一旦我知道我检查行是否正确并将单元格设置为禁用。代码如下:
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
{
if(([[aTableColumn identifier] isEqualToString:@"column1"]) || ([[aTableColumn identifier] isEqualToString:@"column2"]))
{
if (rowIndex == myindex) // myindex holds the row index where I need to disable the cells
{
[aCell setEnabled:NO];
}
}
else
{
return;
}
}
发生什么事很奇怪。我的特定行的Colum1和Colum2被禁用,直到我单击另一行,然后所有行都禁用这两列。
如何禁用这两个非常具体的单元格(仅限于myindex
行且仅column1
和column2
)?
这是一款Mac OS X应用,而不是iOS应用 感谢
答案 0 :(得分:5)
对于这两种情况,您必须每次都明确设置enabled
属性。
//...
else
{
[aCell setEnabled:YES];
}