NSTableView在加载时随机清空

问题描述 投票:-1回答:1

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

macos cocoa nstableview
1个回答
-1
投票

显然,我错过了关于NSTableView文档文档的一个非常重要的段落:

重要

如果在Interface Builder中指定了数据源,则可能会在调用awakeFromNib之前调用用于填充表视图的数据源方法。您应该通过使数据源的numberOfRowsInTableView:方法为尚未配置数据源时的行数返回0来防止这种情况。在awakeFromNib中,初始化数据源时,应始终在表视图上调用reloadData。

现在,我没有在-awakeFromNib初始化(我在-viewDidLoad中做),但是这仍然说你应该总是在表视图上调用-reloadData,你是数据源。

这很容易弄错;通常情况下,表视图将自动加载其数据,而无需任何额外的reload调用。但是,似乎在某些罕见的情况下,这种情况不会发生。

因此,为了防止出现这个问题:始终在表格视图中调用-reloadData,即在初始化后使用-viewDidLoad-awakeFromNib或其他适当方法的数据源。

© www.soinside.com 2019 - 2024. All rights reserved.