如何在NSTableView中设置一行的颜色?

时间:2014-01-10 05:22:13

标签: objective-c cocoa nstableview

谁能帮帮我? 我想让行变成红色,但是所有行都是红色的!

-(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell
  forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    NSColor *cRed = [NSColor redColor];
    NSTextFieldCell* cCell = (NSTextFieldCell*)cell;
    if ([[tableView selectedRowIndexes] containsIndex:4])
        {
            [cCell setTextColor:cRed];
        }
        else
        {
            [cCell setTextColor:[NSColor blackColor]];
        }
}

1 个答案:

答案 0 :(得分:1)

如果表中任何选定的行包含第5行(即索引4),则代码中的这一行:

if ([[tableView selectedRowIndexes] containsIndex:4])

命中并且您在显示的每一行中都看到红色。

也许如果您将该行更改为:

if(row == 4)

(其中row是传递给该方法的参数)

您只会看到一行变为红色。

说实话,这不是设置行/单元格颜色的最佳位置。我认为最好在表格视图数据源中设置它(例如tableView:objectValueForTableColumn:row:)。