我基本上想实现的目标是更改表中单元格的格式,以在未启用该单元格时将其清空。
为了定义是否启用了表格列中的单元格,我已经使用了启用的绑定进行了绑定,并且工作正常,可以在表格的某些行中启用该单元格,而在其他行中则不启用。
我定义了NSTextFieldCell的子类,该子类用于更改单元格的格式。这似乎也可以正常工作,但是根据是否启用了表格中的单元格,我无法触发更改。最初,我尝试通过在单元格上调用[self isEnabled]来激活开关。这行得通,但开关从未激活,我认为这是因为定义单元格是否已启用的原始绑定是表列而不是单元格。
有谁有办法轻松实现这一目标。我注意到的唯一方法是对NSTableColumn进行子类化并编写dataCellForRow的自定义版本:但这似乎并不是解决此问题的最佳方法。
最佳答案
在显示单元格之前,我使用了表格视图的委托方法来设置文本颜色。您可以将单元格颜色设置为背景色,以在禁用该单元格时使其不可见。
-(void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn行:(int)rowIndex
{
NSColor * theColor = [NSColor blackColor];
BOOL使能= YES;
if(![self tableView:aTableView shouldSelectRow:rowIndex])
{
theColor = [aCell backgroundColor];
使能=否;
}
[aCell setTextColor:theColor];
[aCell setEnabled:enable];
}
我简短地测试了这段代码,它起作用了。我没有使用绑定,但是只要表的委托设置正确,这无关紧要。