UITableView
предлагает вам методы для этого:
вызов beginUpdates
, обновление источника данных, вызов moveRowAtIndexPath и, наконец, вызов endUpdates
на UITableView
[tableView beginUpdates];
// update your datasource
// ...
// fill in your indexpath of old and new position
[tableView moveRowAtIndexPath: ... toIndexPath: ...];
[tableView endUpdates];
РЕДАКТИРОВАТЬ: moveRowAtIndexPath только для iOS 5+
поэтому вы бы предпочли использовать это:
[tableView insertRowsAtIndexPaths: ... withRowAnimation:...];
[tableView deleteRowsAtIndexPaths: ... withRowAnimation:...];