iOS反向tableView排序顺序

时间:2012-06-29 14:54:02

标签: iphone ios xcode sorting tableview

有没有办法扭转tableView顺序?

例如,我有一个tableView,它通过firstUpdated排序到LastUpdated。它会自动导致由plist数据组成。但是,如果我想将最新数据放在最顶层并将旧数据放在最底层,该怎么办?

5 个答案:

答案 0 :(得分:6)

另一个解决方案可以正常工作,但这个解决方案有点短。

NSArray *reversedArray = [[originalArray reverseObjectEnumerator] allObjects];

答案 1 :(得分:6)

您应该对用于填充表格视图的数组进行排序。

其他两个答案可行,但如果您需要按对象的任何属性进行排序,我还有另一种方法:

您可以创建方法-sortMyArray

它看起来像:

-(void)sortMyArray
{
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"SomeObjectSortProperty" ascending:YES];

    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

    [MyArray sortUsingDescriptors:sortDescriptors];
    [sortDescriptor release];
}

当然,每次调用此方法后,都需要调用表视图重载数据方法。

希望这有帮助。

答案 2 :(得分:1)

另一种选择(仅保留原始数组的副本)是使用原始数组,只是在UITableViewDataSource函数中以向后顺序抓取对象。

示例:

id currentObject = [originalArray objectAtIndex:(originalArray.count - indexPath.row - 1)];

这实际上可能是一个更好的解决方案,因为您不需要为相反的顺序维护相同数据的2个副本。

答案 3 :(得分:0)

self.yourCurrentArrayOfObjects = ...;
NSMutableArray *reversedArray = [NSMutableArray arrayWithCapacity:yourCurrentArrayOfObjects.count];
for (id object in yourCurrentArrayOfObjects.reverseObjectEnumerator)
{
    [reversedArray addObject:object];
}
self.yourCurrentArrayOfObjects = [reversedArray copy];
[self.tableView reloadData];

答案 4 :(得分:0)

您正在使用数组填充表格视图中的数据...

对该数组进行排序,而不是对表顺序进行排序..