UITableView offers you the following methods:
call beginUpdates , update your data source, call moveRowAtIndexPath and finally call endUpdates on a UITableView
[tableView beginUpdates]; // update your datasource // ... // fill in your indexpath of old and new position [tableView moveRowAtIndexPath: ... toIndexPath: ...]; [tableView endUpdates];
EDIT: moveRowAtIndexPath is for iOS 5+ only, so you would rather use this:
[tableView insertRowsAtIndexPaths: ... withRowAnimation:...]; [tableView deleteRowsAtIndexPaths: ... withRowAnimation:...];
source share