Сортировка NSArrayController с поддержкой NSTableView - PullRequest
14 голосов
/ 30 марта 2011

У меня есть NSArrayController и NSTableView.Они показывают треки из iTunes.Я могу отсортировать список, щелкнув по заголовку.

Есть ли способ установить дескриптор сортировки по умолчанию для табличного представления, чтобы он сортировал по альбомам каждый раз, когда пользователь запускает приложение?

Я пытался установить sortDescriptor на контроллере массива и в табличном представлении, но это ничего не меняет.

Спасибо

Редактировать: Ответ правильный.Но для этого нужен NSArray:

- (NSArray *)mainSortDescriptor {

    return [NSArray arrayWithObjects:
            [NSSortDescriptor sortDescriptorWithKey:@"album" ascending:YES], 
            [NSSortDescriptor sortDescriptorWithKey:@"trackNumber" ascending:YES], 
            nil];

}

Ответы [ 2 ]

13 голосов
/ 01 апреля 2011

Если вы хотите связать дескриптор сортировки контроллера массива, вы должны связать его с чем-то.Вы можете поместить это в свой делегат приложения, например:

- (NSArray *)tracksSortDescriptors {
    return [NSArray arrayWithObject:
             [NSSortDescriptor sortDescriptorWithKey:@"albumName"
                                           ascending:YES]];
}

Затем вы можете установить привязку в IB как

Bind to: MyAppDelegate  
Model Key Path: tracksSortDescriptors

EDITED.Я забыл при переводе этого из PyObjC, что я возвращал список.К сожалению.

5 голосов
/ 09 июня 2011

Я попробовал это, не совсем работало - прибегал при каждом запуске приложения, но не во время работы приложения.

В конце концов, я заметил, что в моем объекте NSArrayController не было отмечено следующее поле (argh!):

"Автоматическая перестановка контента"

... так что, к вашему сведению, у кого есть такая же проблема: убедитесь, что поле включено:)

...