Изменить цвет NSTableViewCell

Как я могу изменить цвет ячейки в моем NSTableView?

Ответ 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
    }