2012-08-16 25 views
9

¿Cómo puedo establecer la posición de inicio de un NSSplitView?Posición inicial del divisor NSSplitView

Lo más parecido que he encontrado que parece que funcionaría es setPosition

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

Esto no parece hacer nada, sin embargo, mi SplitView sigue comienza con el divisor en el centro.

¿Alguna idea?

Respuesta

1

¿Quizás ese es el centro? Si splitView está conectado correctamente a su vista dividida, ese código debería funcionar. Probablemente deba registrar [splitView minPossiblePositionOfDividerAtIndex: 0] y [splitView maxPossiblePositionOfDividerAtIndex: 0] antes de intentar establecer la posición del divisor para conocer los posibles valores.

+0

Sí, no es el centro. Mi valor mínimo es 0 y mi valor máximo es 999. – arooo

+0

No sé qué decir, funcionó bien para mí. Me pregunto si tiene algo que ver con la configuración de restricciones. Acabo de arrastrar una vista dividida, agregué algunos botones y campos de texto a cada lado (para que haya algo que ver) y agregué esa línea de código. – rdelmar

+0

Parece que el problema está en otra parte, tengo una configuración que permite a un usuario elegir su vista predeterminada: si configuro la vista con la vista dividida como la predeterminada, entonces la división está en el centro. Si configuro otra vista como la principal y hago clic en la vista con la vista dividida todo funciona bien. ¿Alguna idea de lo que podría causar esto? – arooo

2

NSSplitView necesita límites iniciales no dimensionados para que la disposición sea correcta. Si su vista tiene tamaño cero, no mostrará el diseño esperado.

La mejor manera es proporcionar un diseño distinto de cero (esto es lo que IB hace), pero a veces esto es imposible.

Si no puede proporcionar un tamaño distinto de cero, entonces creo que tiene que proporcionar la implementación correcta del método delegado - (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize para diseñarlo todo manualmente. (esta es mi mejor práctica actual)

4

No establece la posición del divisor, configura los tamaños de las subvistas NSSplitView. El divisor se reposiciona automáticamente.

Así es como me coloqué mi divisor y el tamaño de la vista secundaria (en Swift):

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

En vivienda de clase de la vista de la vista dividida

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

o donde quiera que se inicie.

Cuestiones relacionadas