Я пытаюсь создать табличное представление без построителя интерфейса с нуля в моем приложении Какао, и мой метод viewForTableColumn
отказывается вызывать.
Мое табличное представление создано с использованием этого кода.
let tableView: NSTableView = {
let table = NSTableView(frame: .zero)
table.headerView = nil
table.addTableColumn(NSTableColumn(identifier: .column))
return table
}()
Еще у меня есть это расширение для класса NSUserInterfaceItemIdentifier
extension NSUserInterfaceItemIdentifier {
static let cell = NSUserInterfaceItemIdentifier("cell")
static let column = NSUserInterfaceItemIdentifier("column")
}
Мой контроллер представления реализует NSTableViewDataSource
и NSTableViewDelegate
, и они установлены в методе viewDidLoad
. Табличное представление также находится в режиме прокрутки.
let scrollView = NSScrollView()
override func viewDidLoad() {
self.scrollView.documentView = self.tableView
self.scrollView.hasVerticalScroller = true
self.view.addSubview(self.scrollView)
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.reloadData() // To make sure the method would be called.
}
Значение, возвращаемое методом numberOfRows
, больше 0
и выполняется.
Насколько я понимаю, следующий метод должен вызываться с параметром строки в диапазоне от 0 до значения, возвращаемого numberOfRows
, но он никогда не вызывается.
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
guard let view = self.tableView.makeView(withIdentifier: .cell, owner: self) as? NSTableCellView else {
return nil
}
// set the text/font for the view
return view
}
Я также пробовал использовать dataCellFor
и rowViewForRow
, но ни один из них не вызывается.
РЕДАКТИРОВАТЬ:
Я проверил рамку своих элементов, чтобы убедиться, что вид таблицы и строки видны.
scrollView
? - person Willeke   schedule 05.12.2018scrollView
, а красный - этоtableView
. - person afrigon   schedule 05.12.2018self.scrollView.frame = self.view.bounds
иnumberOfRowsInTableView
) и называетсяviewForTableColumn
. Возвращаетnil
. - person Willeke   schedule 05.12.2018NSWindow
, но, вероятно, все равно должно работать нормально. - person afrigon   schedule 05.12.2018