NSOutlineView reloadItem: não tem efeito
Eu estou tentando liberar alguma tensão em um baseado em visãoNSOutlineView
para o qual eu mudei uma propriedade de item único e que eu inicialmente recarregado muito bem usando[myOutlineView reloadData]
.
eu tentei[myOutlineView reloadItem: myOutlineViewItem]
mas nunca chama- (NSView *)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item
e consequentemente os dados não são atualizados.
-(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];
}
Estou faltando alguma coisa aqui?
ATUALIZARComo apontado nos comentários, meu outlineView é baseado em visualização.
ATUALIZAÇÃO 2Experimentar alguns materiais me fez perceber que o objeto que estou recarregando é um objeto de segundo nível (cf. árvore de objetos) e chamandoreloadItem:firstLevelObject reloadChildren:YES
funciona.
Seria possível que só pudéssemos chamar reloadItem: no objeto de primeiro nível? Isso seria altamente ineficiente no meu caso (eu só tenho um item de dois níveis e muito segundo nível)!
nil ->firstLevelA ->secondLevel1
->secondLevel2
->firstLevelB ->secondLevel3
->secondLevel4
Vou tentar subclassificar NSOutlineView e reescreverreloadItem:
enquanto isso.
Eu dei uma olhadaNSOutlineView em Cocotron para começar e senti que o código que eu precisava escrever para sobrescrever o reloadItem seria muito pesado. Alguém para confirmar?