Pregunta

NSDisableScreenUpdates();

[self.productsArrayController setFetchPredicate:predicate];
[self.productsArrayController setSortDescriptors:sortDescriptors];

[self.productsArrayController fetchWithRequest:[self.productsArrayController defaultFetchRequest] merge:YES error:nil];

NSSortDescriptor *lastSortDescriptor = [sortDescriptors lastObject];
[tableView setHighlightedTableColumn:[tableView tableColumnWithIdentifier:[lastSortDescriptor key]]];
[tableView setIndicatorImage:[NSImage imageNamed: ([lastSortDescriptor ascending]) ? @"NSAscendingSortIndicator" : @"NSDescendingSortIndicator"]
                          inTableColumn:[tableView tableColumnWithIdentifier:[lastSortDescriptor key]]];        

NSLog(@"currentImage: %@", [tableView indicatorImageInTableColumn:[tableView tableColumnWithIdentifier:[lastSortDescriptor key]]]); /* DEBUG LOG */

NSEnableScreenUpdates();

Código anterior no establece la imagen de un triángulo de clasificación. Soy la creación de múltiples descriptores de clasificación, pero después de cambiar a uno solo, comienza a mostrar una imagen correcta en el encabezado de la columna. En ambos casos, currentImage me muestra que la imagen está ajustado correctamente (lo mismo por orden descendente):

currentImage: <NSImage 0x200495fc0 Name=NSAscendingSortIndicator Size={9, 9} Reps=(
    "NSBitmapImageRep 0x20049f480 Size={9, 9} ColorSpace=Generic RGB colorspace BPS=8 BPP=32 Pixels=9x9 Alpha=YES Planar=NO Format=0 CurrentBacking=<CGImageRef: 0x2004a9e80>"

Cambio de orden de las acciones en el método anterior y el envío de reloadData a mi tableView, no tuvo ningún efecto sobre los resultados.

Me parece que setIndicatorImage funciona como se esperaba, pero de alguna imagen no se visualiza en la cabecera, o al menos no es visible.

¿Qué me estoy perdiendo aquí?

editar

Código se utiliza para poner una subclase de NSViewController en la vista principal de la ventana de aplicación por:

// adding view inside the main view
[mainView addSubview:view];
[view setFrame:[mainView bounds]];

[view display];
[mainView display];
¿Fue útil?

Solución

OK, lo acaba de encontrar algunos bastante simple solución alternativa:

[[[tableView tableColumnWithIdentifier:[lastSortDescriptor key]] headerCell] 
setStringValue:[columnName stringByAppendingString:([lastSortDescriptor ascending]) ? @"  ▲" : @"  ▼"]];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top