抱歉,标题含糊不清,但老实说,我不知道如何更好地使用它。目前,我正在尝试创建一个简单的NSOutlineView。想法是将一些城市分类为州。以下内容表示NSOutlineView的外观
现在您可以看到,一个展开式项目中可能有很多孩子。问题在于,在打开和关闭某些州之后,会出现一些空白行,并且一些城市被放置在随机位置,甚至消失了,如下图所示:
很显然,我自己做了一些研究,并发现了一些有趣的观点。 当扩展状态中有很多城市并且并非所有城市都适合窗口时,就会开始发生此问题。在我看来,如果某些孩子不在屏幕上,他们将无法正确加载。
我看到了类似的问题,他们建议禁用Floats Group Rows
,但我没有做任何改变。
对我来说,这看起来像是NSOutlineView的潜在问题,但我可能错了。我很乐意根据要求显示任何代码,我不想用随机代码弄乱整个帖子,因为我不知道有什么用。
答案 0 :(得分:0)
好吧,我已经为以后遇到类似问题的任何人找到了解决方案。他们在apple docs中声明:
重要
您的数据源方法可能会填充 如果数据源是在awakeFromNib()之前调用大纲视图 在Interface Builder中指定。您应该通过以下方式为之辩护 具有数据源的outlineView(_:numberOfChildrenOfItem :)方法 当数据源尚未返回时,返回0作为项目数 配置。在awakeFromNib()中,当初始化数据源时, 应该始终调用reloadData()。
因此,我在reloadData()
中调用awakeFromNib()
的问题是,awakeFromNib()
在每次扩展项目时都会被多次调用,这些多次重载导致显示元素时出现问题,因此我的解决方案是从reloadData()
awakeFromNib()