gpt4 book ai didi

objective-c - 对 NSTableColumn 内容进行排序

转载 作者:太空狗 更新时间:2023-10-30 03:28:34 26 4
gpt4 key购买 nike

我在对 NSTableColumn 内容进行排序时遇到问题。在我的 NSTableView 中,有三列:文件、大小、路径。内容存储在 NSMutableArray 中。这个数组中的每个对象都是一个包含三个键的 NSDictionary:文件、大小和路径——每个的值都是一个 NSString。

在 Interface Builder 中,我可以在每个表格列的属性中选择排序选项:选择器:IB 输入“compare:”,我认为没问题,因为我比较 NSStrings。排序键 - 这就是我认为的问题 - 我不知道在这里输入什么。

有什么线索吗?如果您对我的代码有疑问,请提问。

最佳答案

所以我找到了完整的解决方案。

首先,转到 Interface Builder。选择要排序的列。转到列的检查器并选择第一个按钮以查看“表格列属性”。设置适当的值(从字面上看,不需要 "或 ' 或 @):

Sort key: file

其中"file"是字典的键,内容显示在您的列中。

Selector: compare:

标准排序函数。

现在,在这里保存所有更改并跳转到 Xcode,跳转到模型所在的类,NSTableView 中显示的数据源。您应该已经知道那里需要两种方法:

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn
*)tableColumn row:(NSInteger)row

需要这两个来符合 NSTableDataSource 非正式协议(protocol)。您可以在 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

关于objective-c - 对 NSTableColumn 内容进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2398481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com