NSOutlineview怪异的行为

时间:2019-03-31 17:33:03

标签: swift xcode interface-builder

抱歉,标题含糊不清,但老实说,我不知道如何更好地使用它。目前,我正在尝试创建一个简单的NSOutlineView。想法是将一些城市分类为州。以下内容表示NSOutlineView的外观Correct Layout

现在您可以看到,一个展开式项目中可能有很多孩子。问题在于,在打开和关闭某些州之后,会出现一些空白行,并且一些城市被放置在随机位置,甚至消失了,如下图所示:Incorrect Layout

很显然,我自己做了一些研究,并发现了一些有趣的观点。 当扩展状态中有很多城市并且并非所有城市都适合窗口时,就会开始发生此问题。在我看来,如果某些孩子不在屏幕上,他们将无法正确加载。

我看到了类似的问题,他们建议禁用Floats Group Rows,但我没有做任何改变。

对我来说,这看起来像是NSOutlineView的潜在问题,但我可能错了。我很乐意根据要求显示任何代码,我不想用随机代码弄乱整个帖子,因为我不知道有什么用。

1 个答案:

答案 0 :(得分:0)

好吧,我已经为以后遇到类似问题的任何人找到了解决方案。他们在apple docs中声明:

  

重要

     

您的数据源方法可能会填充   如果数据源是在awakeFromNib()之前调用大纲视图   在Interface Builder中指定。您应该通过以下方式为之辩护   具有数据源的outlineView(_:numberOfChildrenOfItem :)方法   当数据源尚未返回时,返回0作为项目数   配置。在awakeFromNib()中,当初始化数据源时,   应该始终调用reloadData()。

因此,我在reloadData()中调用awakeFromNib()的问题是,awakeFromNib()在每次扩展项目时都会被多次调用,这些多次重载导致显示元素时出现问题,因此我的解决方案是从reloadData()

中删除awakeFromNib()