beginUpdates
いくつかのコードを試した後、 -ブロック内の変更のバッチについて考える最良の方法endUpdates
は、更新が適用される前のセクションの順序と、すべての更新が適用された後のセクションの順序の条件であるように思われます. Uが更新ブロックの前の順序を表し、Vが更新ブロックの後の順序を表す場合、呼び出しで使用されるセクション インデックスdeleteSections:
と のソース インデックスは、moveSection:toSection:
U のインデックスとで使用されるセクション インデックス、および呼び出しinsertSections:
の宛先インデックスです。moveSection:toSection:
はVのインデックスです。
たとえば、変更をアニメーション化するには、次のようにします。
0 C -> A 0
1 FH 1
2HC2
3 KK 3
あなたが使用することができます:
[tableView deleteSections:@[1] withRowAnimation:UITableViewRowAnimationAutomatic]; // delete F
[tableView insertSections:@[0] withRowAnimation:UITableViewRowAnimationAutomatic]; // insert A
[tableView moveSection:2 toSection:1]; // move H
[tableView moveSection:0 toSection:2]; // move C (implied by other changes so not necessary)
行われた他の変更によって一連の移動が暗示される場合は、それらを明示的に行う必要はありません。たとえば、セクション A をテーブルの一番下に回転するには:
0 A -> B 0
1紀元前1
2 CD2
3 ダ 3
以下は論理的に同等です。
[tableView moveSection:0 toSection:3];
と
[tableView moveSection:1 toSection:0];
[tableView moveSection:2 toSection:1];
[tableView moveSection:3 toSection:2];
ただし、アニメーションはわずかに異なります。最初のケースでは、セクション A は他のセクションの上に移動してアニメーション化されますが、2 番目のケースでは、セクション A の上に移動する 3 つのセクションがアニメーション化されます。
最後に、下に移動するセクションと上に移動するセクションを含む一連の変更をアニメーション化すると、移動しないセクションが下にあり、下に移動するセクションがその上にあり、移動するセクションが表示されます。上が上です。