有没有办法反转 tableView 顺序?
例如,我有一个按 firstUpdated 到 LastUpdated 排序的 tableView。它确实会自动导致其由 plist 数据组成。但是如果我想把最新的数据放在上面,把旧的放在下面怎么办?
您应该对用于填充表格视图的数组进行排序。
其他两个答案会起作用,但是如果您需要按对象的任何属性进行排序,我还有另一种方法:
您可以创建一个方法-sortMyArray
它看起来像:
-(void)sortMyArray
{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"SomeObjectSortProperty" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[MyArray sortUsingDescriptors:sortDescriptors];
[sortDescriptor release];
}
当然,每次调用此方法后,都需要调用表视图重新加载数据方法。
希望这可以帮助。
另一种解决方案可以正常工作,但这个解决方案要短一些。
NSArray *reversedArray = [[originalArray reverseObjectEnumerator] allObjects];
UITableViewDataSource
另一种选择(仅维护原始数组的副本)是使用原始数组并在函数中以倒序抓取对象。
例子:
id currentObject = [originalArray objectAtIndex:(originalArray.count - indexPath.row - 1)];
这实际上可能是一个更好的解决方案,因为您不需要仅仅为了颠倒顺序而维护相同数据的 2 个副本。
您正在使用数组来填充表格视图中的数据...
对该数组进行排序,而不是对表顺序进行排序..
self.yourCurrentArrayOfObjects = ...;
NSMutableArray *reversedArray = [NSMutableArray arrayWithCapacity:yourCurrentArrayOfObjects.count];
for (id object in yourCurrentArrayOfObjects.reverseObjectEnumerator)
{
[reversedArray addObject:object];
}
self.yourCurrentArrayOfObjects = [reversedArray copy];
[self.tableView reloadData];