NSTableView不调用函数

时间:2017-04-05 20:31:14

标签: swift macos-sierra

我正在尝试在macOS应用程序中填充基于NSTableView的简单视图。我在故事板上设置了委托和数据源。我添加了这个小扩展语言。当我加载视图时,会调用func numberOfRows并将它们添加到tableView中,但永远不会调用构建单元格值的函数。

我不确定NSTableView是否正确,但这个基本代码适用于iOS应用程序。我是Swift的新手,似乎无法使其正常工作。

有什么建议吗?

extension LAManagerVC: NSTableViewDataSource, NSTableViewDelegate {

    func numberOfRows(in tableView: NSTableView) -> Int {
        print ("My Activity Count: \(myActivities.count)")
        return myActivities.count
    }

    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?{

        print ("Hello world")
        let cell = tableView.make(withIdentifier: (tableColumn!.identifier), owner: self) as? NSTableCellView
        cell?.textField?.stringValue = myActivities[row].title
        return cell
    }

}

2 个答案:

答案 0 :(得分:0)

问题

来自Documentation

table​View(_:​object​Value​For:​row:)​ 
  

由表视图调用以返回与之关联的数据对象   指定的行和列。

解决方案

要显示单元格,请在您的情况下使用table​View(_:​view​For:​row:​)

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
  print ("Hello world")
  let cell = tableView.make(withIdentifier: (tableColumn!.identifier), owner: self) as? NSTableCellView
  cell?.textField?.stringValue = myActivities[row].title
  return cell
}

答案 1 :(得分:0)

objectValueFor应该返回该特定行(和列)的数据源数组的项目,但从不一个单元格:

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
    return myActivities[row]
}

如果您正在使用Cocoa绑定,请将UI元素绑定到键路径objectValue.<property>,如果没有实现tableView:viewFor:row:并在那里设置UI元素的值。