Сортировка NSArrayController с поддержкой NSTableView
У меня есть NSArrayController и NSTableView. Они показывают треки из iTunes. Я могу сортировать список, щелкнув в заголовке.
Есть ли способ настроить дескриптор сортировки по умолчанию для представления таблицы, чтобы он сортировал альбомы каждый раз, когда пользователь запускает приложение?
Я попытался установить sortDescriptor в контроллере массива и в представлении таблицы, но ничего не меняет.
Спасибо
Изменить: ответ правильный. Но ему нужен NSArray:
- (NSArray *)mainSortDescriptor {
return [NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"album" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"trackNumber" ascending:YES],
nil];
}
Ответы
Ответ 1
Если вы хотите связать дескриптор сортировки контроллера массива, вам нужно связать его с чем-то. Вы можете поместить это в свой делегат приложения, например:
- (NSArray *)tracksSortDescriptors {
return [NSArray arrayWithObject:
[NSSortDescriptor sortDescriptorWithKey:@"albumName"
ascending:YES]];
}
Затем вы можете настроить привязку в IB как
Bind to: MyAppDelegate
Model Key Path: tracksSortDescriptors
<суб > Редакцией. Я забыл, что, переведя это из PyObjC, я возвращал список. К сожалению.Суб >
Ответ 2
Я пробовал это, не совсем работал - прибегал к каждому запуску приложения, но не во время работы приложения.
В конце концов, я заметил, что в моем объекте NSArrayController следующее поле было отпущено (argh!):
"Автоматическое переупорядочение содержимого"
... так, FYI всем, кто имеет ту же проблему: убедитесь, что поле включено:)