我有一个NSOutlineView,其内容绑定到适当的NSTreeController。它运行得非常好,除非我的应用程序加载时,只有大约一半的NSOutlineView内容显示。
如果我离开并返回cmd +标签,则显示所有内容。如果我单击我知道应该有内容的空行,则突然显示我单击的行中的文本。所以内容在那里,它只是没有正确刷新。我想我需要发送NSOutlineView一个needsDisplay消息或类似的东西,但我不太确定在哪里。
这对我来说似乎很不合逻辑 - NSOutlineView肯定能够在绑定时正确显示其内容。有什么明显的东西让我失踪吗?
答案 0 :(得分:0)
根据Apple文档,您应该在创建后将-reloadData
发送到大纲视图。在你的情况下,你的NIB已经完成加载的任何地方(-awakeFromNib
?-applicationDidFinishLaunching
?取决于实施)。
您是否向大纲视图发送了-reloadData
消息?这总是适合我。
答案 1 :(得分:0)
我放弃了绑定这个NSOutlineView并转而使用NSOutlineViewDataSource代替。我怀疑我的代码的某些部分并不完全符合KVO,这使它无法正常工作。
答案 2 :(得分:0)
使用KVO时,您可以通过将willChangeValueForKey:
和didChangeValueForKey:
发送到拥有绑定到NSOutlineView的属性的对象(很可能是控制器)来引发更改通知。这些消息可以从awakeFromNib:
或applicationDidFinishLaunching:
处理程序发送,就像reloadData
一样。
如果您在问题中添加(最小)sample code,我们可能会弄清楚这是否能解决问题,或者是否还有其他需要解决的问题。