NSTableView viewFor tableColumn委托方法未调用

Ром*_*ров 2 macos xcode cocoa nstableview swift

在代码中,我有这样的东西:

let scrollView = NSScrollView()
let tableView = NSTableView()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do view setup here.

    tableView.delegate = self
    tableView.dataSource = self
    tableView.headerView = nil

    scrollView.documentView = tableView
    scrollView.hasVerticalScroller = true

    self.view.addSubview(scrollView)

}
Run Code Online (Sandbox Code Playgroud)

numberOfRows声明了两个必需的方法(以及标题中的方法)。TableView在视图中可见,可以滚动和选择。tableViewSelectionDidChange工作正常,我可以通过来获取所选行的索引tableView.selectedRow。但是所有单元格都是空的,因为tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int)不需要任何单元格。我认为,问题在于tableView无法确定哪些单元格现在可见。但是我不知道该怎么办

man*_*ahn 5

好吧,我挣扎了片刻,但很快就明白了。该tableView由你产生的是好的。

唯一缺少的是一列。您只需添加一列即可:

tableView.addTableColumn(NSTableColumn(identifier: "Column"))
Run Code Online (Sandbox Code Playgroud)

表格视图在列内显示其视图。大多数tableViews只有一列,并且标题隐藏了,我们忘记了它们甚至存在。

没有任何列,其他所有内容仍然可以正常工作。BackgroundRows的加载和选择工作正常-这使我得以解决此问题。