2016-12-03 62 views
-2

我有一个NSTableView使用视图控制器作为NSTableViewDataSource。有时表和它的数据加载得很好,但有时它只是空白,并且数据源方法不会被调用。为什么这种随机行为,以及如何解决这个问题?NSTableView随机加载空

+0

你什么时候在你的tableview上调用reloadData?也许提前,数据源尚未填满? – Volker

+0

Woah,哇,什么是downvotes?我只是问/回答我自己的问题,希望有人面临类似的错误(这绝对是一个错误,不应该这样工作)可以修复它的应用程序相对较小的挫折。 – ThatsJustCheesy

+0

@Volker:谢谢你,你真是太棒了。实际上我根本不会调用'-reloadData',因为直到这一点,所有其他表视图都会自动加载,无需手动干预。然而,这种情况是不同的。我更新了答案。 – ThatsJustCheesy

回答

-2

显然,我错过了NSTableView的文档文件的极其重要段:

重要

这有可能是用于填充表视图的数据源方法可能之前被调用如果在Interface Builder中指定了数据源,将调用awakeFromNib。您应该通过让数据源的numberOfRowsInTableView:方法在尚未配置数据源时的行数返回0来抵御此。在awakeFromNib中,当数据源被初始化时,你应该总是在表视图上调用reloadData。

现在,我不-awakeFromNib初始化(我这样做是在-viewDidLoad),但是这仍然说,你应该随时拨打-reloadData对你的数据源表视图。

这可能很容易让这个错误;通常情况下,表格视图会自动加载其数据,不需要任何额外的reload调用。然而,它似乎确实在一些罕见的情况下,这可能不会发生。

因此,防止这个问题:随时拨打-reloadData对你进行初始化后 -in -viewDidLoad-awakeFromNib,或其他一些适当的方法的数据源表视图。