NSOutlineview奇怪的行为

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

我很抱歉这个模糊的标题,但老实说,我不知道如何更好地把它。目前我正在尝试创建一个简单的NSOutlineView。这个想法是将一些城市分类到他们的州。以下代表NSOutlineView应该如何看起来像Correct Layout

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

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

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

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

swift xcode interface-builder
1个回答
0
投票

好的,我已经找到了解决方案,适用于未来有类似问题的人。在apple docs他们说:

重要

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

因此,我在reloadData()中调用了awakeFromNib()这个问题,然而,每当你扩展一个项目时,awakeFromNib()被多次调用,这些多次重载会导致显示元素的问题,因此我的解决方案只是从reloadData()删除awakeFromNib()

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