如何更改 NSTableView 中单元格的颜色?
问问题
9716 次
4 回答
14
在您的NSTableViewDelegate
for 中NSTableView
,实现此方法:
- (void)tableView:(NSTableView *)tableView
willDisplayCell:(id)cell
forTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row
在显示每个单元格之前,它会在其NSTableView
委托上调用 this,以便您可以影响其外观。假设您正在使用 NSTextFieldCells,对于要更改调用的单元格:
[cell setBackgroundColor:...];
或者,如果要更改文本颜色:
[cell setTextColor:...];
如果您希望列具有不同的外观,或者如果所有列都不是 NSTextFieldCells,请使用[tableColumn identifier]
来识别列。您可以通过选择表格列在 Interface Builder 中设置标识符。
于 2010-05-22T01:29:50.960 回答
2
// TESTED - Swift 3 解决方案...用于更改单列中单元格文本的颜色。我的表格视图中的所有列都有一个唯一标识符
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
let myCell:NSTableCellView = tableView.make(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
if tableColumn?.identifier == "MyColumn" {
let results = arrayController.arrangedObjects as! [ProjectData]
let result = results[row]
if result.ebit < 0.0 {
myCell.textField?.textColor = NSColor.red
} else {
myCell.textField?.textColor = NSColor.black
}
}
return myCell
}
于 2017-03-18T22:03:20.413 回答
0
尝试NSView
为此使用自定义或NSTableView
's-setBackgroundColor:
方法。
于 2010-05-21T02:05:44.177 回答
0
//for VIEW based TableViews using Objective C
//in your NSTableViewDelegate, implement the following
//this customization makes the column numbers red if negative.
- (NSView *)tableView:(NSTableView *)inTableView
viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row
{
NSTableCellView *result = nil;
if ([tableColumn.title isEqualToString: @"Amount"]) {
//pick one of the following methods to identify the NSTableCellView
//in .xib file creation, leave identifier "blank" (default)
result = [inTableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
//or set the Amount column's NSTableCellView's identifier to "Amount"
result = [inTableView makeViewWithIdentifier:@"Amount" owner:self];
id aRecord = [[arrayController arrangedObjects] objectAtIndex:row];
//test the relevant field's value
if ( aRecord.amount < 0.0 )
[[result textField] setTextColor:[NSColor colorWithSRGBRed:1.0 green:0.0 blue:0.0 alpha:1.0]];
} else {
//allow the defaults to handle the rest of the columns
result = [inTableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
}
return result;
}
于 2018-05-18T11:51:37.323 回答