В 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
).