.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() 不起作用,可能没有在主线程上调用

iOS - tableView 的 reloadData 不调用 cellForRowAtIndexPath

在 UICollectionView 上调用 reloadData 后 contentSize 未更新