【问题标题】:Sorting a NSArrayController backed NSTableView对 NSArrayController 支持的 NSTableView 进行排序
【发布时间】:2011-03-29 20:12:54
【问题描述】:

我有一个 NSArrayController 和一个 NSTableView。他们显示来自 iTunes 的曲目。我可以通过单击标题对列表进行排序。

有没有办法为表格视图设置一个默认的排序描述符,以便在用户每次启动应用程序时对专辑进行排序?

我尝试在数组控制器和表格视图上设置 sortDescriptor,但没有任何改变。

谢谢

编辑:答案是正确的。但它需要一个 NSArray:

- (NSArray *)mainSortDescriptor {

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

}

【问题讨论】:

    标签: cocoa sorting nstableview nsarraycontroller


    【解决方案1】:

    如果你想绑定数组控制器的排序描述符,你必须把它绑定到的东西上。你可以把它放在你的应用程序委托中,例如:

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

    然后你可以在IB中设置绑定为

    绑定到:MyAppDelegate 模型键路径:tracksSortDescriptors

    已编辑。我忘记了,当我从 PyObjC 翻译这个时,我正在返回一个列表。哎呀。

    【讨论】:

    • 没错。我尝试了类似的东西,但没有奏效。现在它起作用了。谢谢
    • @Josh Caswell 我收到以下错误:[ valueForUndefinedKey:]:这个类不符合键轨道排序描述符的键值编码。有什么想法吗?
    • @DomVinyard 您已绑定到视图控制器而不是应用程序委托。没问题,只需在视图控制器中实现 tracksSortDescriptors 方法即可。
    【解决方案2】:

    我试过这个,但不太奏效 - 在每次应用启动时使用,但不是在应用运行时使用。

    最后,我注意到在我的 NSArrayController 对象中,以下框未被选中(啊!):

    “自动重新排列内容”

    ...所以,仅供遇到相同问题的任何人参考:确保该框已打开 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      相关资源
      最近更新 更多