tableView の順序を逆にする方法はありますか?
たとえば、firstUpdated から LastUpdated に並べ替える tableView があります。plistデータによって自動的に構成されます。しかし、最新のデータを上に、古いデータを下に配置したい場合はどうすればよいでしょうか?
テーブルビューにデータを入力するために使用する配列を並べ替える必要があります。
他の2つの答えは機能しますが、オブジェクトのプロパティで並べ替える必要がある場合は、別の方法でこれを行うことができます。
メソッドを作成できます-sortMyArray
そしてそれは次のようになります:
-(void)sortMyArray
{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"SomeObjectSortProperty" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[MyArray sortUsingDescriptors:sortDescriptors];
[sortDescriptor release];
}
もちろん、このメソッドを呼び出すたびに、テーブルビューのreloaddataメソッドを呼び出す必要があります。
お役に立てれば。
他の解決策は問題なく機能しますが、これは少し短いです。
NSArray *reversedArray = [[originalArray reverseObjectEnumerator] allObjects];
UITableViewDataSource
もう 1 つの方法 (元の配列のコピーのみを維持するため) は、元の配列を使用して、関数内で逆順にオブジェクトを取得することです。
例:
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];
配列を使用してテーブルビューにデータを入力していました...
テーブルの順序をソートするのではなく、その配列をソートします。