Frage

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

-Code über kein Dreieck Sortier Bild gesetzt. Ich gründe mehrere Sortier Deskriptoren, sondern um sie zu einem einzigen nach dem Wechsel, beginnt er wahrheitsgetreues Bild in Spaltenüberschrift angezeigt werden soll. In beiden Fällen currentImage zeigt mir, dass richtiges Bild gesetzt (das gleiche gilt für absteigende Reihenfolge):

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

Ändern der Reihenfolge der Aktionen im obigen Verfahren und Senden reload meinem Tableview, hatte keinen Einfluss auf die Ergebnisse.

Es scheint mir, dass setIndicatorImage wie erwartet funktioniert, aber irgendwie ist Bild nicht in der Kopfzeile angezeigt wird, oder zumindest nicht sichtbar ist.

Was ich hier fehlt?

EDIT

-Code wird verwendet, um eine Unterklasse von NSViewController in der Hauptansicht der App-Fenster setzen von:

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

[view display];
[mainView display];
War es hilfreich?

Lösung

OK, habe ich nur ein paar einfache genug Behelfslösung gefunden

[[[tableView tableColumnWithIdentifier:[lastSortDescriptor key]] headerCell] 
setStringValue:[columnName stringByAppendingString:([lastSortDescriptor ascending]) ? @"  ▲" : @"  ▼"]];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top