2012-12-14 15 views
5

Mi chiedo come si fa a animato l'espansione/compressione del nodo della struttura di un NSOutlineView dal codice?NSOutlineView espandere/animazione crollo dal codice

// this works ok but doesn't animate 

NSTreeNode *node = [self.outlineView itemAtRow:self.outlineView.clickedRow]; 

if([self.outlineView isItemExpanded:node]) 
{ 
    [self.outlineView.animator collapseItem:node]; 
}else{ 
    [self.outlineView.animator expandItem:node]; 
} 

vista un contorno anima naturalmente se si espande un nodo tramite la freccia default-disegnato
Quindi c'è un modo ...

risposta

11

mio codice originale era OK, questo proprio non era disponibile in 10,7

testo originale da Application Kit Release Notes for OS X v10.8:

NSOutlineView

I seguenti metodi supportano ora essere animati attraverso il proxy -animator: - expandItem :, -expandItem: expandChildren :, -collapseItem :, and -collapseItem: collapseChildren :. Ad esempio, per animare l'espansione di un particolare oggetto: [[outlineView animator] expandItem: item];

+0

Puoi collegarmi alle note di rilascio dove dice questo? – zakdances

+0

Fatto. Il testo è nella sezione NSOutlineView – Nightbirdsevolve

+1

Se si utilizza Swift, non si otterrà il completamento automatico in Xcode quando si tenta di digitare 'outlineView.animator(). Ex'. Forse è un bug. Ma funziona davvero se lo digiti manualmente 'outlineView.animator(). ExpandItem (item)'. –

0

Il problema è probabilmente il node si sta passando a collapseItem:. È necessario passare l'oggetto utilizzato dal controller dell'albero per rappresentare il nodo anziché il nodo effettivo dal modello dati. Se si utilizza NSTreeController, è necessario attraversare la struttura restituita da -[NSTreeController arrangedObjects] per individuare il nodo che rappresenta l'oggetto del modello dati.

+0

Ciao, ho avuto successo nell'aprire/comprimere tramite il codice quello che ho un problema è ANIMARE lo – Nightbirdsevolve