2011-08-08 9 views
6

Estoy usando un objeto NSOutlineView para representar una estructura de archivos y estoy descubriendo que no sangrará correctamente cualquier elemento secundario que sea expansible, aunque sangrará los elementos secundarios que no lo son.Problema de indentación NSOutlineView

Aquí hay una foto para mostrar lo que quiero decir:

NSOutlineView example

En este ejemplo, "AnotherFolder" es un hijo de "Carpeta2", sin embargo no es así guión en línea con los otros archivos con sangría. Curiosamente, el niño "AnotherFile.java" de "AnotherFolder" hace sangría correctamente (2 niveles en).

He intentado establecer propiedades como "indentationFollowsCells" en vano. Parece que debería ser muy simple, pero no puedo resolverlo.

Gracias!

Editar: Un poco de información extra a petición:

estoy usando el protocolo NSOutlineViewDataSource para la implementación, aquí está el código relacionado con lo siguiente:

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 
    return item; 
} 

- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item { 
    NSMutableDictionary* dict; 
    if(item == nil) { 
     dict = fileTree; 
    } else { 
     dict = [((MyFile*) item) children]; 
    } 

    NSArray* keys = [dict allKeys]; 
    NSArray* sorted = [keys sortedArrayUsingSelector:@selector(compare:)]; 
    NSString* key = [sorted objectAtIndex:index]; 
    return [dict objectForKey:key]; 
} 

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { 
    return [[item children] count] > 0; 
} 

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { 
    if(item == nil) { 
     return [fileTree count]; 
    } 
    return [[item children] count]; 
} 
+1

No ha proporcionado ningún dato técnico. ¿Está utilizando el protocolo Bindings o NSOutlineViewDataSource? Si es el primero, publique una descripción * completa * de sus enlaces; en este último caso, publique una lista del código * completo * de la implementación del protocolo de origen de datos. –

+0

@Joshua algo seguro, actualizó la publicación original – Gary

+0

¿Está seguro de que no sangra * todos * los niños expandibles, o solo aquellos en el 2 ° nivel? ¿Qué sucede si tiene elementos expandibles profundamente anidados? – jtbandes

Respuesta

6

trate de cambiar su vista de esquema de una Fuente vista de esquema a una normal.

+0

gracias spudwaffle – Gary

+1

+1 Wow, gracias por esto. ¡Este problema me estaba volviendo loco! Me tomó un tiempo descubrir que querías decir el estilo más destacado en el constructor de interfaces ... pero lo encontré así que gracias. – regulus6633

Cuestiones relacionadas