我有一个NSTableView
使用视图控制器作为NSTableViewDataSource
。有时表和它的数据加载很好,但有时它只是空白,并且不调用数据源方法。为什么这种随机行为,以及如何解决这个问题?
显然,我错过了关于NSTableView
文档文档的一个非常重要的段落:
重要
如果在Interface Builder中指定了数据源,则可能会在调用awakeFromNib之前调用用于填充表视图的数据源方法。您应该通过使数据源的numberOfRowsInTableView:方法为尚未配置数据源时的行数返回0来防止这种情况。在awakeFromNib中,初始化数据源时,应始终在表视图上调用reloadData。
现在,我没有在-awakeFromNib
初始化(我在-viewDidLoad
中做),但是这仍然说你应该总是在表视图上调用-reloadData
,你是数据源。
这很容易弄错;通常情况下,表视图将自动加载其数据,而无需任何额外的reload
调用。但是,似乎在某些罕见的情况下,这种情况不会发生。
因此,为了防止出现这个问题:始终在表格视图中调用-reloadData
,即在初始化后使用-viewDidLoad
,-awakeFromNib
或其他适当方法的数据源。