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

时间:2008-12-23 03:23:29

标签: cocoa

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

该应用程序可以正常工作,但该表的默认排序顺序错误。

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

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

3 个答案:

答案 0 :(得分:7)

请看NSSortDescriptor

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

答案 1 :(得分:5)

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

NSSortDescriptor *buildETASortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"buildETA" ascending:NO];
[_arrayController setSortDescriptors:[NSArray arrayWithObject:buildETASortDescriptor]];
[buildETASortDescriptor release];

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

答案 2 :(得分:0)

您也可以创建此自定义类,然后在InterfaceBuilder中选择您的ArrayController并将Indentity Inspector中的Custom Class更改为CustomArrayController

#import "CustomArrayController.h"
@implementation PatchbayArrayController

-(void)awakeFromNib
{
    [super awakeFromNib];
    NSSortDescriptor *mySortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"propertyNameHere" ascending:YES];
    [self setSortDescriptors:[NSArray arrayWithObject:mySortDescriptor]];
    [mySortDescriptor release]; 
}
@end