Как я могу изменить цвет ячейки в моем NSTableView?
Изменить цвет NSTableViewCell
Ответ 1
Попробуйте использовать для этого NSView
или NSTableView
-setBackgroundColor:
.
Ответ 2
В NSTableViewDelegate
для NSTableView
выполните этот метод:
- (void)tableView:(NSTableView *)tableView
willDisplayCell:(id)cell
forTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row
NSTableView
вызывает это на своем делетете перед отображением каждой ячейки, чтобы вы могли повлиять на ее внешний вид. Предполагая, что вы используете NSTextFieldCells, для ячейки, которую вы хотите изменить:
[cell setBackgroundColor:...];
Или, если вы хотите изменить цвет текста:
[cell setTextColor:...];
Если вы хотите, чтобы столбцы имели разные значения или все столбцы не были NSTextFieldCells, используйте [tableColumn identifier]
to, er, идентифицируйте столбец. Вы можете установить идентификатор в Interface Builder, выбрав столбец таблицы.
Ответ 3
//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
}