Iam开发iPad应用程序,它具有自定义单元格的tableview。 每个单元格都是一个表示3列中类的属性的对象。 我想根据列对数据进行排序。我如何使用目标c实现它?对桌面视图中的对象排序
回答
您可以使用NSSortDescriptor来完成这项工作。
准备需要排序
NSArray *objects = [[NSArray alloc] initWithObjects:obj1, obj2, obj3, nil];
创建NSSortDescriptors阵列阵列,在这个例子中我使用1.对于DescriptorKey,采取从小区A属性上您希望的排序为基于根据。
NSArray *descriptor = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]];
然后实例化一个新的数组,并从NSArray中调用sortedArrayUsingDescriptors实例方法,你最初的阵列上,返回与同一对象排序后的数组。
NSArray *sortedArray = [objects sortedArrayUsingDescriptors:descriptor];
希望这有助于!
为了我的理解,UITableView中没有“列”。人们在TableViewCell中放置格式良好的子视图,使表格看起来像有列。
对于Array的排序,你可以尝试上面的Bryan的方法。在你得到排序后的数组调用
[TheTableView reloadData];
如果排序在tableView单元格创建之前发生,则不需要调用'reloadData'。 – Craimasjien
我有一个类似的情况,多个NSMutableArrays和许多自定义单元格。我不得不根据各种栏目对它们进行排序,并且我全面搜索并找不到解决方案。 所以这里是我的:
从列上的UIButton,我发送两个参数(sortwith和升序/降序),并将每个“行”的所有内容保存到字典中。
-(void)sortTheArray :(NSString *)sortWith :(BOOL)isAsc
{
sortedArray = [[NSMutableArray alloc]init];
NSDictionary *dict;
for (int i =0; i< orderArr.count; i++) {
dict = [NSDictionary dictionaryWithObjectsAndKeys:[addressArr objectAtIndex:i], @"names", [zipArr objectAtIndex:i], @"zip", [orderArr objectAtIndex:i], @"orderNo", [cityArr objectAtIndex:i], @"city", nil];
[sortedArray addObject:dict];
// NSLog(@"Sorted Array: %@", [sortedArray objectAtIndex:i]);
}
现在基于哪个列被点击,我使用排序描述符对我们刚创建的字典进行排序。
NSSortDescriptor *sortDescript = [[NSSortDescriptor alloc]initWithKey:sortWith ascending:isAsc];
NSArray *descriptors = [NSArray arrayWithObject:sortDescript];
NSArray *newSortedArray = [sortedArray sortedArrayUsingDescriptors:descriptors];
我重新初始化现有的可变数组,使它们为零。
orderArr = [[NSMutableArray alloc]init];
zipArr = [[NSMutableArray alloc]init];
addressArr = [[NSMutableArray alloc]init];
cityArr = [[NSMutableArray alloc]init];
在这里,我开始将排序数组的内容添加回旧的NSMutableArrays并重新加载表。
for (int i = 0; i<newSortedArray.count; i++) {
// NSLog(@"New Sorted Array is : %@", [newSortedArray objectAtIndex:i]);
orderArr = [newSortedArray valueForKey:@"orderNo"];
zipArr = [newSortedArray valueForKey:@"zip"];
addressArr = [newSortedArray valueForKey:@"names"];
cityArr = [newSortedArray valueForKey:@"city"];
}
[self.tableObject reloadData];
}
柜面你需要它,我的UIButton看起来是这样的:
- (IBAction)sortWithOrderNo:(id)sender;
{
if (isAscending == YES) {
[self sortTheArray:@"orderNo":YES];
isAscending = NO;
}
else
{
[self sortTheArray:@"orderNo":NO];
isAscending = YES;
}
}
- 1. 在桌面视图中重新排列iPad的不同方向的对象
- 2. 当它在桌面视图中排序时排序数组
- 3. 什么对象处理桌面MVC应用程序中的切换视图?
- 4. JS - 排序对象中的子对象
- 5. 对象排序与对象
- 6. 在对象中排序对象,javascript
- 7. 排序对象
- 8. 排序对象
- 9. 排序对象
- 10. 排序对象
- 11. 排序的对象
- 12. 对C++中的对象进行排序
- 13. 对Rails索引中的对象排序
- 14. 可排序的对象链表对象
- 15. 使用对象数据源在列表视图中排序
- 16. 视图中的Codeigniter对象
- 17. 视图中的域对象
- 18. 在java中排序对象
- 19. 在django paginator页面对象上排序
- 20. Jquery - 排序对象
- 21. UI排序对象
- 22. Javascript:对象排序
- 23. 排序JavaScript对象
- 24. Javascript对象[排序]
- 25. 检查的对象是谷歌桌面
- 26. 在C++中对对象数组排序
- 27. Javascript排序的对象的子对象的对象数组
- 28. 在ASP.NET MVC视图中转储对象 - 对象倾销视图
- 29. Swift解析 - 本地数据存储和在桌面视图中显示对象
- 30. 按子对象排序对象数组
嘿感谢。它运行良好 – Tinku