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

时间:2018-01-16 07:19:13

标签: ios objective-c

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

[filePathsArray sortUsingSelector:@selector(compare:)];

表视图只是使用csv文件中的数组提交的常规表视图。这就是我得到阵列的方式 paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

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);

任何帮助或方向将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:1)

使用sortUsingComparator代替sortUsingSelector来实现不同的排序方向:

[filePathsArray sortUsingComparator:^NSComparisonResult(NSString* fp1, NSString* fp2) {
  return [fp1 compare:fp2];
}];

要恢复排序方向,只需交换compare的参数:

[filePathsArray sortUsingComparator:^NSComparisonResult(NSString* fp1, NSString* fp2) {
  return [fp2 compare:fp1];
}];

您的A-ZZ-A按钮可以使用其中一种方法进行排序,然后拨打[tableView reloadData]