Шаг 1 NSTableRowView
не может заменить NSTableCellView
, используйте NSTableCellView
для ячеек таблицы.
Начиная с тестового приложения. В IB выберите столбец в табличном представлении и добавьте текстовое представление ячейки таблицы из библиотеки.
В ViewController.swift замените tableView(_:rowViewForRow:)
tableView(_:viewFor:row:)
.
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
guard let cell = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: self) as? NSTableCellView else {
fatalError()
}
cell.textField?.stringValue = array[row].name
return cell
}
В setTableView()
удалить регистрацию пера.
func setTableView() {
tableView.delegate = self
tableView.dataSource = self
tableView.registerForDraggedTypes([NSPasteboard.PasteboardType(rawValue: "mymoney.account")])
}
ServicesTableViewCell больше не используется.
Шаг 2 Используйте подкласс NSTableRowView
для отключения isEmphasized
:
Добавьте подкласс NSTableRowView
, назовем его ServicesTableRowView
.
Переопределить isEmphasized
, чтобы сделать его всегда false
.
class ServicesTableRowView: NSTableRowView {
override var isEmphasized: Bool {
get {
return false
}
set {
// do nothing
}
}
}
В IB выберите табличное представление и добавьте пользовательское представление из библиотеки. Установите класс вида на ServicesTableRowView
и идентификатор NSTableViewRowViewKey
.
Модифицированный тестовый проект: we.tl/t- yjpZrz6q7g