所以我找到了完整的解决方案。
首先,转到界面生成器。选择要排序的列。转到列的检查器并选择第一个按钮以查看“表列属性”。设置适当的值(从字面上看,不需要 " 或 ' 或 @):
Sort key: file
其中“文件”是在您的列中显示内容的字典的键。
Selector: compare:
标准排序功能。
现在,保存所有更改并跳转到 Xcode,到模型所在的类,NSTableView 中显示的数据源。您应该已经知道那里需要两种方法:
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn
*)tableColumn row:(NSInteger)row
这两个是符合 NSTableDataSource 非正式协议所必需的。你可以在 MacDev 中心阅读它。
现在您所要做的就是添加一个新方法:
-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors
它可以包含一个非常简单的代码来做这件事:
-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors
{
NSArray *newDescriptors = [tableView sortDescriptors];
[results sortUsingDescriptors:newDescriptors];
//"results" is my NSMutableArray which is set to be the data source for the NSTableView object.
[tableView reloadData];
}
就这样。它在我的应用程序中运行,希望它适用于您的情况:D 一切都应该自动运行。我刚刚保存了所有文件并构建了应用程序。它奏效了。:)
帮助我的网站:
CocoaDev:SortingNSTableView