2009-08-25 8 views
5

Me gustaría tener el mismo comportamiento de elementos especiales que en la aplicación Things. Me refiero a Diario y papelera artículos en la parte inferior de la barra lateral:¿Cómo mantener el último elemento de árbol de NSOutlineView en la parte inferior de una barra lateral?

Logbook and Trash items are in the most bottom http://tinyurl.com/lhctza

favor avise cualquier forma de implementar la misma funcionalidad en el árbol de la barra lateral.

Creo que ese elemento de árbol especial 'espaciador' se debe usar junto con el método outlineView:heightOfRowByItem:.

Sin embargo, no puedo encontrar la forma de calcular la altura total de todos los elementos visibles (incluido el espacio entre los grupos).

Respuesta

1

He decidido codificar la solución agregando 8 píxeles de altura para cada elemento raíz en estilo de grupo. Por lo tanto, el código es el siguiente:

- (CGFloat)outlineView:(NSOutlineView *)ov heightOfRowByItem:(id)item; 
{ 
    if (![item isSpacer]) return [ov rowHeight]; 

    static const CGFloat ADDITIONAL_SPACE = 8.0f; 
    NSUInteger numberOfRootGroups = 2; 
    CGFloat heightOfRows = [ov rowHeight] * ([ov rowForItem:item] + 1) 
     + ADDITIONAL_SPACE * numberOfRootGroups; 
    CGFloat heightOfSidebar = [[ov superview] frame].size.height; 
    return MAX(0.0f, heightOfSidebar - heightOfRows); 
} 

Gracias a todos por el apoyo!

3

Puede intentar simplemente tener dos vistas de esquema: una de altura fija, fijada en la parte inferior de su supervista, y la otra de altura variable, con su parte inferior inmediatamente encima de la primera. La vista de esquema de altura fija contendría esos elementos de libro de registro y papelera, y la vista de esquema de altura variable contendría todos los demás.

La parte difícil sería hacer que esta jugada sea agradable con una vista de desplazamiento, pero creo que podrías hacerlo. Me imagino que los pondría a ambos en un NSView de tamaño completo y la vista de documentos de la vista de desplazamiento.

+0

+1. He visto otras listas (como el elemento Opciones de inicio de sesión en el prefraneo Cuentas) replicadas de esta manera. – iKenndac

+0

Sin embargo, también debe administrar no solo estados de desplazamiento y 2 vistas sino nivel de sangría, respuestas siguientes, algunas teclas de acceso rápido, etc. La pregunta sigue abierta :) – Stream

+0

El nivel de sangría no debería cambiar si se trata de elementos de nivel superior. Buen punto acerca de la cadena de respuesta, sin embargo. –

Cuestiones relacionadas