我要做的是在单击I按钮时在NSTableView中设置所选行的背景颜色。
我已经看过其他人使用tableView:willDisplayCell:forTableColumn:row:
和setBackgroundColor:
的情况,但我不认为这会在我希望单击按钮时发生的情况下有效。
我知道我可以使用NSTableView的selectedRow
方法找到所选行,并为setBackgroundColor:
的单元格设置背景颜色,但我不知道怎么做是从NSInteger获取对于选定的行到NSCell来设置背景颜色。
答案 0 :(得分:7)
NSTableView
仅为每列使用NSCell
的一个实例。绘制内容时,将为每一行更新单元格。这就是为什么没有方法来获取指定行的单元格 - 您必须修改tableView:willDisplayCell:forTableColumn:row:
中的单元格。
您可以告诉表格视图使用reloadDataForRowIndexes:columnIndexes:
仅更新一行。
答案 1 :(得分:6)
将背景颜色设置为NSTableview
行
- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell1 forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
if(row==1)
[cell1 setBackgroundColor:[NSColor redColor]];
else if(row==2||row==3)
[cell1 setBackgroundColor:[NSColor greenColor]];
else
[cell1 setBackgroundColor:[NSColor clearColor]];
}
使用这种方法我们可以为每一行赋予不同的颜色。
确保在drawsBackground
上启用了NSTextFieldCell
,否则这将无效!
答案 2 :(得分:5)
如果您只想更改整个选定行的颜色:
NSInteger selectedRow = [self.nsTableView selectedRow];
NSTableRowView* rowView = [self.nsTableView rowViewAtRow:selectedRow makeIfNecessary:NO];
[rowView setBackgroundColor:[NSColor blackColor]];
glhf