NSOutlineView不刷新/显示所有内容

时间:2010-11-20 02:41:02

标签: objective-c core-data cocoa-bindings nsoutlineview

我有一个NSOutlineView,其内容绑定到适当的NSTreeController。它运行得非常好,除非我的应用程序加载时,只有大约一半的NSOutlineView内容显示。

如果我离开并返回cmd +标签,则显示所有内容。如果我单击我知道应该有内容的空行,则突然显示我单击的行中的文本。所以内容在那里,它只是没有正确刷新。我想我需要发送NSOutlineView一个needsDisplay消息或类似的东西,但我不太确定在哪里。

这对我来说似乎很不合逻辑 - NSOutlineView肯定能够在绑定时正确显示其内容。有什么明显的东西让我失踪吗?

3 个答案:

答案 0 :(得分:0)

根据Apple文档,您应该在创建后将-reloadData发送到大纲视图。在你的情况下,你的NIB已经完成加载的任何地方(-awakeFromNib-applicationDidFinishLaunching?取决于实施)。

您是否向大纲视图发送了-reloadData消息?这总是适合我。

答案 1 :(得分:0)

我放弃了绑定这个NSOutlineView并转而使用NSOutlineViewDataSource代替。我怀疑我的代码的某些部分并不完全符合KVO,这使它无法正常工作。

答案 2 :(得分:0)

使用KVO时,您可以通过将willChangeValueForKey:didChangeValueForKey:发送到拥有绑定到NSOutlineView的属性的对象(很可能是控制器)来引发更改通知。这些消息可以从awakeFromNib:applicationDidFinishLaunching:处理程序发送,就像reloadData一样。

如果您在问题中添加(最小)sample code,我们可能会弄清楚这是否能解决问题,或者是否还有其他需要解决的问题。