Ios 如何按字母顺序对tableview单元格排序

Ios 如何按字母顺序对tableview单元格排序,ios,objective-c,Ios,Objective C,我有一个数组填充的日期视图单元格,我需要添加两个按钮,一个用于A到Z,另一个用于Z到A。我可以对数组进行排序,但不确定如何在运行时更改它,我的意思是在表视图中按下按钮。这是我用来排序的te代码: [filePathsArray sortUsingSelector:@selector(compare:)]; 表视图只是从csv文件中用数组归档的常规表视图。这就是我获取数组的方式 paths=nsSearchPathForDirectoriesIndoMainsDocumentDirectory,

我有一个数组填充的日期视图单元格,我需要添加两个按钮,一个用于A到Z,另一个用于Z到A。我可以对数组进行排序,但不确定如何在运行时更改它,我的意思是在表视图中按下按钮。这是我用来排序的te代码:

[filePathsArray sortUsingSelector:@selector(compare:)];
表视图只是从csv文件中用数组归档的常规表视图。这就是我获取数组的方式 paths=nsSearchPathForDirectoriesIndoMainsDocumentDirectory,NSUserDomainMask,是

NSString *documentsDirectory = [paths objectAtIndex:0];

NSFileManager *manager = [NSFileManager defaultManager];
NSMutableArray*   fileList = [manager contentsOfDirectoryAtPath:documentsDirectory error:nil];
//--- Listing file by name sort
NSLog(@"\n File list %@",fileList);

//---- Sorting files by extension
NSMutableArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil];

[filePathsArray sortUsingSelector:@selector(compare:)];
NSLog(@"\n sort by");

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF EndsWith '.csv'"];
filePathsArray =  [filePathsArray filteredArrayUsingPredicate:predicate];
NSLog(@"\n\n Sorted files by extension %@",filePathsArray);
任何帮助或指导都将不胜感激。 谢谢。

使用sortUsingComparator而不是sortUsingSelector来实现不同的排序方向:

[filePathsArray sortUsingComparator:^NSComparisonResult(NSString* fp1, NSString* fp2) {
  return [fp1 compare:fp2];
}];
要恢复排序方向,只需交换参数进行比较:


然后,您的A-Z和Z-A按钮可以使用其中一种方法进行简单排序,并调用[tableView reloadData]。

假设数据源已正确完成,只需重新加载需要更新的单元格即可。UITableView有一个.reloadData来重新加载整个表,如果只有特定单元格受到影响,您可以改为使用.reloadRowsat:with:提供要重新加载的单元格的indexPath,以及enum UITableViewRowAnimation的一个选项来选择重新加载这些行的视觉效果。您好!我使用了上面的代码,但却破坏了我在控制台中得到的结果:-[\uu NSArrayI sortUsingComparator:]:未识别的选择器发送到OSStoryboard[31492:4290430]的实例0x1c4649330 2018-01-16:12:03.305146-0700***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayI sortUsingComparator:]:无法识别的选择器发送到实例0x1c4649330'Ah,这很可能是因为子路径DirectoryAtPath返回一个不可变数组。将对filePathsArray的分配更改为以下内容:NSMutableArray*filePathsArray=[[NSFileManager defaultManager]子路径目录AtPath:Documents目录错误:nil].mutableCopy;i、 例如,append.mutableCopy
[filePathsArray sortUsingComparator:^NSComparisonResult(NSString* fp1, NSString* fp2) {
  return [fp2 compare:fp1];
}];