NSOutlineView - Auto-expand alle Knoten
-
21-08-2019 - |
Frage
Ich habe eine NSOutlineView
an einen NSTreeController
gebunden bekam (wenn das einen Unterschied macht), und ich möchte jeden Knoten in meinem -awakeFromNib()
erweitern.
Ich mag auch programmatisch das erste Kind des ersten Knotens gleichzeitig wählen. Diese Art von Dingen sind einfach mit Tabellenansichten, aber Konturen zusammen nicht mit mir überhaupt nicht.
Danke,
Reich
Lösung
Ich möchte jeden Knoten in meinem -awakeFromNib erweitern ().
Ab Mac OS X 10.5, [outlineView expandItem:nil expandChildren:YES]
.
In früheren Versionen von Mac OS X, müssen Sie von 0 auf die Anzahl der Zeilen zu durchlaufen, immer das Element für jede Zeile [outlineView itemAtRow:row]
verwenden, und diese Elemente in ein Array zu speichern, dann das Array durchlaufen und jedes Element übergeben Verfahren zum expandItem:expandChildren:
. (Sie können die zwei Schleifen nicht mischen, da ein Element erweitert und alle seine Nachkommen werden die Zeilenindizes der nachfolgenden Geschwister ändern, daher müssen Sie sammeln alle Top-Level-Elemente zuerst, dann sie erweitern, wenn Sie alle von ihnen haben. )
Ich würde auch programmatisch gerne das erste Kind des ersten Knotens gleichzeitig wählen.
Unmittelbar nach der oben, wird es Zeile 1 sein.
Eine Gliederungsansicht ist eine Art Tabellenansicht, so dass Sie einen von NSTableView Methoden verwenden:. [outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO]
Andere Tipps
Wenn Sie von einer Datenquelle geladen werden,
dispatch_async(dispatch_get_main_queue(), ^{
[self.outlineView expandItem:root expandChildren:YES];
});