开发者

Sorting a NSArrayController backed NSTableView

开发者 https://www.devze.com 2023-02-20 10:21 出处:网络
I have a NSArray开发者_如何学编程Controller and a NSTableView. They show tracks from iTunes. I can sort the list by clicking in the header.

I have a NSArray开发者_如何学编程Controller and a NSTableView. They show tracks from iTunes. I can sort the list by clicking in the header.

Is there a way to set up a default sort descriptor for the table view so it sorts for albums every time the user launches the app?

I tried to set the sortDescriptor on the array controller and the table view but that changes nothing.

Thank you

Edit: The answer is right. But it needs a NSArray:

- (NSArray *)mainSortDescriptor {

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

}


If you want to bind the array controller's sort descriptor, you have to bind it to something. You can put this in your application delegate, for example:

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

Then you can set up the binding in IB as

Bind to: MyAppDelegate  
Model Key Path: tracksSortDescriptors

EDITED. I forgot, when translating this from PyObjC, that I was returning a list. Oops.


I tried this, didn't quite work - resorted on each app start, but not while the app was running.

Eventually, I noticed that in my NSArrayController object, the following box was unticked (argh!):

"Auto rearrange content"

...so, FYI to anyone who has the same problem: make sure that box is ON :)

0

精彩评论

暂无评论...
验证码 换一张
取 消