OSX扩展不调用tableView viewFor方法

时间:2018-07-05 14:15:25

标签: swift xcode macos nstableview

我已经设置了Table View以便在OSX扩展中显示。
我基本上从OSX TableViewController复制了代码,然后在.xib TodayViewController中创建了相关的接口,将tableView的{​​{1}}连接到tableview组件。
File's Owner面板中,我还将扩展名TodayViewController.xib设置为Main Interface

问题在于,当我运行扩展名时,方法General被正确触发,但是numberOfRows(in tableView: NSTableView)没有被触发。因此,我的观点是空的。

这是我的设置

tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int)

我想我缺少什么。

1 个答案:

答案 0 :(得分:0)

您的直接问题是您从tableView(objectValueFor:row:)中省略了NSTableViewDataSource方法。如文档所述:

  

除非您的应用程序正在使用Cocoa绑定向表视图提供数据,否则此方法是强制性的。

tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int)可用于自定义将用于显示对象值的视图,但是如果您从不首先提供对象值,那么您将走不了那么远。

但是,在macOS上,我建议查看NSArrayController和Cocoa Bindings以填充表格视图。在大多数情况下,这很容易设置,并且免费提供了许多不错的功能。