Я знаю, что это более старый вопрос, но я столкнулся с той же проблемой и думаю, что нашел решение, поэтому я подумал, что поделюсь, если кто-нибудь еще найдет способ здесь с тем же вопросом.Я также не уверен, насколько это хорошее решение, но оно мне подходит.
Мой TableView получает данные из массива с именем _objects
.В моем методе сортировки я начинаю с создания другого массива, который является точной копией массива данных:
NSArray *objectsBeforeSort = [NSArray arrayWithArray:_objects];
Затем я сортирую массив данных, _objects
, используя дескрипторы сортировки, которые я уже создал,После вызова соответствующего метода сортировки в моем массиве, я использую это для анимации обновления таблицы:
[self.tableView beginUpdates];
for (int i = 0; i < _objects.count; i++)
{
// newRow will get the new row of an object. i is the old row.
int newRow = [_objects indexOfObject:objectsBeforeSort[i]];
[self.tableView moveRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0] toIndexPath:[NSIndexPath indexPathForRow:newRow inSection:0]];
}
[self.tableView endUpdates];
Я еще не тестировал этот код подробно, но, похоже, он дает желаемый результат.