我正在尝试在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
}
}
答案 0 :(得分:0)
tableView(_:objectValueFor:row:)
由表视图调用以返回与之关联的数据对象 指定的行和列。
要显示单元格,请在您的情况下使用tableView(_:viewFor: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元素的值。