.reloadData() 没有调用 NSTableView 委托方法
Posted
技术标签:
【中文标题】.reloadData() 没有调用 NSTableView 委托方法【英文标题】:NSTableView Delegate Methods aren't getting called by .reloadData() 【发布时间】:2018-02-13 22:34:25 【问题描述】:虽然我知道这很简单。
我有多个 ViewController,每个 ViewController 都有一个表格视图来显示特定于控制器的数据列表。四分之三的工作完美。但是,我显然遗漏了第四部分,因为 .reloadData() 永远不会调用 Delegate 方法。没有编译器错误,只是从不出于某种原因调用我的委托方法。
这是我的班级设置,包括我连接的插座变量:
class performanceViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate
//--------------------------------
// OUTLET CONNECTIONS
//--------------------------------
@IBOutlet weak var displayPerformanceList: NSTableView!
我还实现了以下两个委托函数:
func numberOfRows(in tableView: NSTableView) -> Int
和
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?
但由于某种原因,当我执行自定义函数时,这些函数都没有被调用:
func redrawViews()
self.displayPerformanceList.reloadData()
(注意:.reloadData 被包装在一个函数中,因为它还将执行我尚未添加的其他事情。)
我在两个委托函数中都添加了断点,这就是我知道它们没有被执行的方式。
我知道这将是我错过的一些愚蠢的事情,因为我在其他三个自定义视图控制器中工作...我只是无法为我的生活弄清楚我错过了什么...
任何想法将不胜感激!
:)
【问题讨论】:
【参考方案1】:好吧,在浏览了更多内容并遵循了一些教程之后,我发现了我的问题。我完全忘记将 NSTableView 数据源和委托链接到 Interface Builder 中的控制器!
哇!
将此问题/答案留在这里,以防其他人被此抓住。 :)
【讨论】:
刚刚也被这个烫伤了。谢谢!以上是关于.reloadData() 没有调用 NSTableView 委托方法的主要内容,如果未能解决你的问题,请参考以下文章
viewForHeaderInSection 没有在 reloadData 上被调用
reloadData 没有调用 cellForRowAtIndexPath
cellForRowAtIndexPath:reloaddata 未调用
tableView.reloadData() 不起作用,可能没有在主线程上调用