【发布时间】:2013-11-13 19:51:12
【问题描述】:
我正在尝试释放基于视图的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];
}
我在这里错过了什么吗?
更新
正如 cmets 中所指出的,我的 outlineView 是基于视图的。
更新 2
尝试了一些东西让我意识到我正在重新加载的对象是一个二级对象(cf 对象树)并且调用 reloadItem:firstLevelObject reloadChildren:YES 确实有效。
是否有可能我们只能在第一级对象上调用 reloadItem: ?在我的情况下,这将是非常低效的(我只有一个二级项目和很多二级项目)!
nil ->firstLevelA ->secondLevel1
->secondLevel2
->firstLevelB ->secondLevel3
->secondLevel4
同时尝试继承 NSOutlineView 并重写 reloadItem:。
更新 3
我查看了NSOutlineView in Cocotron 以开始并觉得我需要编写的覆盖reloadItem 的代码会很繁重。有人要确认吗?
【问题讨论】:
-
表格是基于视图的,不是基于单元格的,是吗?
-
确实如此。有关系吗?
-
我也遇到了这个问题。你找到解决办法了吗?
-
不幸的是,我没有。您认为是否值得将其提交给 Apple 支持?
标签: cocoa nstableview nsoutlineview