UITableViewのセルを移動許可するには、以下のUITableViewDelegateでYESを返します。

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

この時、UITableView#editingをYESにすると移動だけでなく削除も可能になります。

04

場合によっては移動だけ可能にしたい場合もあるでしょう。削除をさせないためには以下のUITableViewDelegateメソッドを実装します。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleNone;
}

UITableViewCellEditingStyleNoneを返すことで削除ボタンが表示されなくなりますが、代わりに空白が空いてしまいます。

02

これをなくすために以下のUITableViewDelegateを実装します。

03