Я пытаюсь высвободить некоторую нагрузку на основанную на представлении 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];
}
Я что-то пропустил?
UPDATE
Как указано в комментариях, мой outlineView основан на просмотре.
ОБНОВЛЕНИЕ 2
Попробовав некоторые вещи, я понял, что объект, который я перезагружаю, является объектом второго уровня (дерево объектов cf) и работает reloadItem:firstLevelObject reloadChildren:YES
.
Возможно ли, что мы можем только вызвать reloadItem: на объекте первого уровня? Это было бы очень неэффективно в моем случае (у меня есть только один элемент уровня и много второго уровня)!
nil ->firstLevelA ->secondLevel1
->secondLevel2
->firstLevelB ->secondLevel3
->secondLevel4
Попробуем подклассифицировать NSOutlineView и переписать reloadItem:
в среднем.
ОБНОВЛЕНИЕ 3
Я взглянул на NSOutlineView в Cocotron, чтобы начать, и почувствовал, что код, который мне нужен, чтобы перезаписать reloadItem, будет очень тяжелым. Кто-нибудь, чтобы подтвердить?