Domanda

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();

Codice di cui sopra non impostare un'immagine Triangolo di smistamento. Sto installando più descrittori di ordinamento, ma dopo aver cambiato ad uno solo, inizia a visualizzare l'immagine corretta nella colonna. In entrambi i casi, currentImage mi dimostra che immagine corretta è impostata (lo stesso per ordine decrescente):

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>"

Per Cambiare di azioni in metodo di cui sopra e l'invio reloadData al mio tableView, non ha avuto effetto sui risultati.

Mi sembra che setIndicatorImage funziona come previsto, ma in qualche modo l'immagine non viene visualizzata nell'intestazione, o almeno non è visibile.

Che cosa mi manca qui?

Modifica

Codice viene utilizzato per mettere una sottoclasse di NSViewController nella vista principale della finestra di app:

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

[view display];
[mainView display];
È stato utile?

Soluzione

OK, ho appena trovato un po 'abbastanza semplice work-around:

[[[tableView tableColumnWithIdentifier:[lastSortDescriptor key]] headerCell] 
setStringValue:[columnName stringByAppendingString:([lastSortDescriptor ascending]) ? @"  ▲" : @"  ▼"]];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top