NSOutlineView reloadItem: hat keine Auswirkung
Ich versuche, eine Anstrengung auf der Basis von Ansichten abzubauenNSOutlineView
für die ich eine einzelne Item-Eigenschaft geändert habe und die ich anfangs ganz gut mit reloaded habe[myOutlineView reloadData]
.
Ich habe es versucht[myOutlineView reloadItem: myOutlineViewItem]
aber es ruft nie an- (NSView *)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item
und folglich werden die Daten nicht aktualisiert.
-(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];
}
Vermisse ich hier etwas?
AKTUALISIERENWie in den Kommentaren erwähnt, ist meine outlineView ansichtsbasiert.
UPDATE 2Beim Ausprobieren einiger Dinge wurde mir klar, dass das Objekt, das ich neu lade, ein Objekt der zweiten Ebene (siehe Objektbaum) ist und aufgerufen wirdreloadItem:firstLevelObject reloadChildren:YES
funktioniert.
Wäre es möglich, dass wir reloadItem: nur für Objekte der ersten Ebene aufrufen können? Das wäre in meinem Fall sehr ineffizient (ich habe nur einen Gegenstand mit zwei Ebenen und jede Menge zweiter Ebene)!
nil ->firstLevelA ->secondLevel1
->secondLevel2
->firstLevelB ->secondLevel3
->secondLevel4
Ich werde versuchen, NSOutlineView zu unterteilen und neu zu schreibenreloadItem:
inzwischen.
Ich habe einen Blick darauf geworfenNSOutlineView in Cocotron Ich hatte das Gefühl, dass der Code, den ich schreiben musste, um reloadItem zu überschreiben, ziemlich schwer sein würde. Jemand zur Bestätigung?