我正在尝试释放基于视图的压力,NSOutlineView
为此我更改了单个项目属性,并且最初使用[myOutlineView reloadData]
.
我试过 [myOutlineView reloadItem: myOutlineViewItem]
了,但它从不调用- (NSView *)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item
,因此数据没有更新。
-(void)reloadOutlineViewObject
{
//[myOutlineView reloadData]; //Reload data just fines but is ressource-hungry
NSLog(@"%d",[myOutlineView rowForItem:myOutlineViewItem]; //Making sure my object is an item of the outlineView, which it is !
[myOutlineView reloadItem:myOutlineViewItem];
}
我在这里错过了什么吗?
更新
正如评论中所指出的,我的 outlineView 是基于视图的。
更新 2
尝试一些东西让我意识到我正在重新加载的对象是一个二级对象(cf 对象树)并且调用reloadItem:firstLevelObject reloadChildren:YES
确实有效。
是否有可能我们只能在第一级对象上调用 reloadItem: ?在我的情况下,这将是非常低效的(我只有一个二级项目和大量二级项目)!
nil ->firstLevelA ->secondLevel1
->secondLevel2
->firstLevelB ->secondLevel3
->secondLevel4
将尝试继承 NSOutlineView 并同时重写reloadItem:
。
更新 3
我查看了 Cocotron 中的 NSOutlineView以开始使用,并觉得我需要编写的覆盖 reloadItem 的代码会很繁重。有人确认吗?