有没有办法扭转tableView顺序?
例如,我有一个tableView,它通过firstUpdated排序到LastUpdated。它会自动导致由plist数据组成。但是,如果我想将最新数据放在最顶层并将旧数据放在最底层,该怎么办?
答案 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)
您正在使用数组填充表格视图中的数据...
对该数组进行排序,而不是对表顺序进行排序..