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();
上記のコードは、三角形の並べ替え画像を設定していません。複数の並べ替え記述子を設定していますが、単一の並べ替え記述子に変更すると、列ヘッダーに正しい画像が表示され始めます。どちらの場合も、currentImageは、正しい画像が設定されていることを示しています(降順でも同じです)。
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>"
上記のメソッドでアクションの順序を変更し、reloadDataをtableViewに送信しても、結果には影響しませんでした。
setIndicatorImageは期待どおりに機能しているように見えますが、どういうわけか画像がヘッダーに表示されていないか、少なくとも表示されていません。
ここで何が欠けていますか?
編集
コードは、NSViewControllerのサブクラスをアプリのウィンドウのメインビューに配置するために使用されます。
// adding view inside the main view
[mainView addSubview:view];
[view setFrame:[mainView bounds]];
[view display];
[mainView display];