【发布时间】:2017-07-20 17:54:49
【问题描述】:
我有两个 tableviews,tableview1 从 NSArrayController 中获取数据。 Tableview2 从 tableview 委托中获取数据,如下所示:
func tableView(_ tableview2: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
if tableview2 == self.tableview2 {
if let cellView = tableView.make(withIdentifier: (tableColumn?.identifier)!, owner: self) as? NSTableCellView {
let numbers = array[row]
if tableColumn?.identifier == "cell" {
cellView.textField?.stringValue = "\(numbers.number)"
return cellView
}
}
}
return nil
}
如果我从 tableview1 重新加载数据,上面的 tableview 函数会被调用并返回 nil。所以 tableview1 总是空的。我当然可以删除 tableview1 的委托插座,但我需要它来实现 tableViewSelectionDidChange() 功能。
【问题讨论】:
-
你到底想做什么?如果重新加载 tableView1,它将调用 viewForTableColumn。如果您不想这样,请不要在 tableView1 上调用 reloadData。如果您返回 nil,您的 tableview1 是如何在屏幕上呈现的?
-
@adev 我没有在 tableview1 上调用 reloadData。 Tableview1 通过 NSArrayController 绑定到一个数组 [NSObejct]。当我更新数组时, tableview1 显示空行。 tableview1 中的行数对应于数组中的项目数。 tableview1 中也有正确的值(我可以在控制台中看到它)。所以 tableview1 填充了正确的行数,甚至是正确的值。但是表格视图中的单元格在视觉上是空的。
-
你为什么重复问同一个问题?大约 20 小时前,您问了完全相同的问题。
-
@ElTomato 因为有一条评论显然缺少一些代码。所以我重新提出了这个问题。
标签: swift cocoa notifications delegates tableview