2012-08-16 12 views
9

Come si imposta la posizione iniziale di un NSSplitView?Posizione iniziale del divisore NSSplitView

La cosa più vicina che ho trovato che sembra che potrebbe funzionare è setPosition

//Set splitView position. 
[splitView setPosition:330 ofDividerAtIndex:0]; 

Questo non sembra di fare nulla, però, il mio SplitView inizia ancora con il divisore al centro.

Qualche idea?

risposta

1

Forse quello è il centro? Se splitView è correttamente collegato alla vista divisa, il codice dovrebbe funzionare. Probabilmente dovresti registrare [splitView minPossiblePositionOfDividerAtIndex: 0] e [splitView maxPossiblePositionOfDividerAtIndex: 0] prima di provare a impostare la posizione del divisore in modo da conoscere i valori possibili.

+0

Sì, non è il centro. Il mio valore minimo è 0 e il mio valore massimo è 999. – arooo

+0

Non so cosa dire - ha funzionato bene per me. Mi chiedo se ha qualcosa a che fare con le impostazioni dei vincoli? Ho appena trascinato una vista divisa, aggiunto alcuni pulsanti e campi di testo su ciascun lato (quindi ci sarebbe da vedere qualcosa) e ho aggiunto quella riga di codice. – rdelmar

+0

Sembra che il problema risieda altrove, ho un'impostazione che consente a un utente di scegliere la sua visualizzazione predefinita, se imposto la vista con splitView come predefinita, quindi la divisione è al centro. Se si imposta un'altra vista come principale e si fa clic nella vista con splitView, tutto funziona correttamente. Qualche idea su cosa potrebbe causare questo? – arooo

2

NSSplitView richiede i limiti iniziali non di dimensioni per renderli correttamente il layout. Se la vista ha zero dimensioni, non mostrerà il layout previsto.

Il modo migliore è fornire un layout diverso da zero (questo è quello che fa IB), ma a volte questo è impossibile.

Se non è possibile fornire una dimensione diversa da zero, quindi penso che è necessario fornire l'implementazione del metodo delegato - (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize per il layout tutto manualmente manualmente. (questa è la mia migliore pratica corrente)

4

Non si imposta la posizione del divisore, si impostano le dimensioni delle sottoview di NSSplitView. Il divisore viene quindi riposizionato automaticamente.

Ecco come ho posizionato il mio divisorio e le dimensioni visualizzazione secondaria (in rapido):

let subview: NSView = mySplitView.subviews[1] as NSView 
subview.setFrameSize(NSMakeSize(subview.frame.size.width, 100)) 
0

In custodia di classe della vista visualizzare le due parti

override func viewWillAppear() { 
    self.mySplitView.setPosition(120, ofDividerAtIndex: 0) 
} 

o dove si desidera iniziare.

Problemi correlati