2011-03-29 33 views
14

Tengo un NSArrayController y un NSTableView. Muestran pistas de iTunes. Puedo ordenar la lista haciendo clic en el encabezado.Ordenando un NSArrayController respaldado NSTableView

¿Hay alguna forma de configurar un descriptor de clasificación predeterminado para la vista de tabla, de modo que ordene los álbumes cada vez que el usuario inicie la aplicación?

Intenté configurar el sortDescriptor en el controlador de array y la vista de tabla, pero eso no cambia nada.

Gracias

Editar: La respuesta es correcta. Pero necesita un NSArray:

- (NSArray *)mainSortDescriptor { 

    return [NSArray arrayWithObjects: 
      [NSSortDescriptor sortDescriptorWithKey:@"album" ascending:YES], 
      [NSSortDescriptor sortDescriptorWithKey:@"trackNumber" ascending:YES], 
      nil]; 

}

Respuesta

13

Si desea enlazar descriptor de tipo de la controladora de la matriz, usted tiene que obligar a éste a algo. Usted puede poner esto en su delegado aplicación, por ejemplo:

- (NSArray *)tracksSortDescriptors { 
    return [NSArray arrayWithObject: 
      [NSSortDescriptor sortDescriptorWithKey:@"albumName" 
              ascending:YES]]; 
} 

entonces se puede establecer la unión en el IB como

 
Bind to: MyAppDelegate 
Model Key Path: tracksSortDescriptors 

editados. Olvidé, al traducir esto de PyObjC, que estaba devolviendo una lista. Oops.

+0

Eso es correcto. Intenté algo similar, pero no funcionó. Ahora funciona. Gracias – david

+1

@Josh Caswell Obtengo el siguiente error: [ valueForUndefinedKey:]: esta clase no es un valor clave que cumple con la codificación para los tracks claveSortDescriptors. Alguna idea? –

+0

@DomVinyard Has vinculado al controlador de vista en lugar de a la aplicación delegada. No hay problema, simplemente implemente el método 'tracksSortDescriptors' en su controlador de vista. –

5

Intenté esto, no funcionó del todo: recurrí al inicio de cada aplicación, pero no mientras la aplicación se estaba ejecutando.

el tiempo, me di cuenta que en mi objeto NSArrayController, el cuadro siguiente fue sin marcar (argh!):

"contenido rearrange Auto"

... así que, para tu información a cualquier persona que tenga el mismo problema : asegúrese de que la casilla esté activada :)

Cuestiones relacionadas