2012-06-29 104 views
4

有没有办法反转tableView顺序?iOS反向tableView排序顺序

例如,我有一个tableView,按firstUpdated排序到LastUpdated。它会自动使其由plist数据组成。但是如果我想把最新的数据放在最上面而老的放在底部呢?

回答

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]; 
+0

它会颠倒阵列,而他想排序他的数组而不是反向 – Abhishek

+0

“有没有办法扭转tableView命令?我认为他确实希望它逆转? – hypercrypt

+0

我只是说他必须排序他的数组没有反向..你怎么能假定数组排序其糟糕的做法,我只是想排序数组按顺序不倒退...得到我的观点 – Abhishek

6

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

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

+0

它只会扭转数据不是它会排序..所以它不是一个好的选择.. – Abhishek

+0

我不明白你的意思。我假设初始数组是排序的(因为它应该是)。反转已排序的数组会为您提供反向排序的数组。 – Dima

+0

他从p列表中选择如何说数组已排序? – Abhishek

0

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

那种阵列,而不是排序表的顺序..

+0

这个男人怎么了? – Abhishek

+0

这不是我投票失败。我其实已经投票了,因为你已经帮了我一次。但它是有道理的,你说什么,我只是不知道怎么做,大声笑 –

+0

我不是说你投票..我只是关心那个谁做的,因为如果你有任何问题,那么你可以投票我有任何问题..反正你只是排序你的数组不反向..它将在未来的情况下帮助你.. – Abhishek

6

你应该使用数组排序填充表格视图。

其他两个答案的工作,但我不得不这样做的另一种方式,如果你需要通过对象的任何属性排序:

您可以创建一个方法-sortMyArray

,它会看起来像:

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

    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 

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

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

希望这会有所帮助。

1

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

例子:

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

这实际上可能是一个更好的解决方案,因为你并不需要保持相同数据的2个副本只是为了相反的顺序。