4

有没有办法反转 tableView 顺序?

例如,我有一个按 firstUpdated 到 LastUpdated 排序的 tableView。它确实会自动导致其由 plist 数据组成。但是如果我想把最新的数据放在上面,把旧的放在下面怎么办?

4

5 回答 5

6

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

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

您可以创建一个方法-sortMyArray

它看起来像:

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

    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

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

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

希望这可以帮助。

于 2012-06-29T15:05:29.197 回答
6

另一种解决方案可以正常工作,但这个解决方案要短一些。

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

于 2012-06-29T15:00:27.100 回答
1

UITableViewDataSource另一种选择(仅维护原始数组的副本)是使用原始数组并在函数中以倒序抓取对象。

例子:

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

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

于 2012-06-29T15:27:59.823 回答
0

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

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

于 2012-06-29T15:03:18.617 回答
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];
于 2012-06-29T14:58:13.777 回答