NSTableView视图未调用tableColumn委托方法

时间:2016-11-14 20:10:11

标签: swift xcode macos cocoa nstableview

在代码中我有类似的东西:

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)

}

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

1 个答案:

答案 0 :(得分:3)

嗯,我挣扎了一会儿,但很快就清楚了。你生成的tableView没问题。

唯一缺少的是专栏。 您只需添加一列:

tableView.addTableColumn(NSTableColumn(identifier: "Column"))

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

没有任何列,其他一切仍然正常。 BackgroundRows加载和选择工作 - 这使我得到了这个解决方案。