Как изменить цвет NSTableRowView?

В Swift, чтобы изменить цвет NSTableRowView, нужно использовать пользовательскую реализацию подкласса NSTableRowView и переопределить его метод drawSelection(in dirtyRect: NSRect).

Вот пример, показывающий, как это сделать:

1. Создайте новый файл Swift в проекте и назовите его, например, CustomRowView.swift.
2. Внутри файла CustomRowView.swift определите класс, наследуемый от NSTableRowView:

import Cocoa

class CustomRowView: NSTableRowView {
  
    override func drawSelection(in dirtyRect: NSRect) {
        // определяем цвет, который хотим использовать для закраски выбранных строк
        let selectionColor = NSColor(red: 0.5, green: 0.7, blue: 1.0, alpha: 1.0)
        
        // если строка выбрана, закрашиваем ее указанным цветом
        if isSelected {
            selectionColor.setFill()
            dirtyRect.fill()
        } else {
            super.drawSelection(in: dirtyRect)
        }
    }
  
}

3. Теперь нужно использовать кастомизированный NSTableRowView. Для этого, например, когда устанавливаете источник данных для таблицы, переменной rowView присваивается экземпляр CustomRowView:

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
    // создаем ячейку для заданной колонки и строки
    let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "CellIdentifier"), owner: self) as! NSTableCellView
    
    // ...
  
    // создаем экземпляр CustomRowView
    let rowView = CustomRowView()
  
    // устанавливаем rowView для строки
    tableView.rowView(atRow: row, makeIfNecessary: true)?.addSubview(rowView)
  
    // ...
  
    return cell
}

Теперь, когда строка будет выбрана, она будет закрашена кастомным цветом, указанным в методе drawSelection(in dirtyRect: NSRect).

Обратите внимание, что вы можете настроить цвет, чтобы сделать его соответствующим вашим потребностям. Просто измените значения красного (red), зеленого (green) и синего (blue) каналов в RGB-модели и настройте прозрачность (alpha).