如何为NSTableView设置默认排序顺序?

Dus*_*tin 4 cocoa

我有一个cocoa应用程序,它有一个通过NSArrayController绑定到模型的TableView.

该应用程序按我的意愿工作,但表的默认排序顺序是错误的.

buildwatch http://public.west.spy.net/BuildWatch.png

我通常启动程序并单击最后一个标题两次以使其以正确的方式排序.是否有一种方法可以在nib/bindings /中指定默认的排序顺序,或者以编程方式告诉它如果我在那里点击两次会发生什么?或者甚至只记得以前的排序顺序?

Nat*_*ger 7

看看NSSortDescriptor.

您可以使用-setSortDescriptors:在NSTableView上进行设置.或者,您可以将排序描述符放在ivar中,并使用IB中的排序描述符绑定将它们绑定.


sbo*_*oth 5

我通常在-windowDidLoad中做这种事情.假设您的NSWindowController子类将IBOutlet _arrayController设置为相关的NSArrayController,并且您的模型拥有属性buildETA:

NSSortDescriptor *buildETASortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"buildETA" ascending:NO];
[_arrayController setSortDescriptors:[NSArray arrayWithObject:buildETASortDescriptor]];
[buildETASortDescriptor release];
Run Code Online (Sandbox Code Playgroud)

编辑:将-awakeFromNib更改为-windowDidLoad,因为这是一个假设的NSWindowController子类