2009-02-06 14 views
22

Ho uno NSOutlineView associato a uno NSTreeController (se questo fa la differenza), e mi piacerebbe espandere ogni nodo nel mio -awakeFromNib().NSOutlineView - Espansione automatica di tutti i nodi

Vorrei anche selezionare in modo programmatico il primo figlio del primo nodo allo stesso tempo. Questo genere di cose è semplice con le visualizzazioni delle tabelle, ma i contorni non collaborano affatto con me.

Grazie,

Rich

risposta

54

mi piacerebbe espandere ogni nodo nel mio -awakeFromNib().

A partire da Mac OS X 10.5, [outlineView expandItem:nil expandChildren:YES].

Nelle versioni precedenti di Mac OS X, è necessario scorrere da 0 al numero di righe, ottenere l'elemento per ogni riga utilizzando [outlineView itemAtRow:row] e archiviare tali elementi in un array, quindi iterare l'array e passare ciascuno elemento al metodo expandItem:expandChildren:. (Non puoi mescolare i due anelli perché espandendo un oggetto e tutti i suoi discendenti cambieranno gli indici di riga dei suoi fratelli successivi, quindi, prima devi raccogliere tutti gli oggetti di primo livello, quindi espanderli dopo averli tutti.)

Vorrei anche selezionare in modo programmatico il primo figlio del primo nodo allo stesso tempo.

Subito dopo quanto sopra, sarà riga 1.

Una vista struttura è una sorta di vista tabella, in modo che verrà utilizzato uno dei metodi di NSTableView: [outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO].

+0

Perfetto, grazie. Perché il passaggio nullo funziona? Ho provato quel messaggio con quasi tutti gli oggetti che potevo pensare ... –

+1

Come spiega la documentazione di NSOutlineView, passandoli nil quando l'elemento dice di espandere tutti gli elementi radice. –

+1

Relativo anche: non bere troppo vino quando si codifica e non dimenticare di collegare la presa a NSOutlineView come facevo oggi. ;) –

-2

Se si sta caricando da un datasource,

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.outlineView expandItem:root expandChildren:YES]; 
}); 
Problemi correlati