0

テーブルを更新する前に、テーブル データソースには 1 行のセクションが 1 つしかありません。

  • セクション 0
    • 行 [0,0]

更新後、データ ソースはさらに 2 つのセクションを返します。それぞれに 1 つの行しかありません。

  • セクション 0
    • 行 [0,0]
  • セクション 1
    • 行 [1,0]
  • 第2節
    • 行 [2,0]

次のコードを使用して、テーブルの更新をアニメーション化します。

// テーブルをリロードせずに、テーブル データ ソースを更新します
UpdateTable();       

TableView.BeginUpdates();

// セクション 1 と 2 を挿入
TableView.InsertSections(NSIndexSet.FromNSRange(新しい NSRange(1, 2)), UITableViewRowAnimation.Fade);

// 新しいセクションごとに 1 つずつ、2 つの新しい行を挿入します (行 [1,0] と [2,0])
TableView.InsertRows(新しい NSIndexPath[] { NSIndexPath.FromRowSection(0, 1), NSIndexPath.FromRowSection(0, 2) }, UITableViewRowAnimation.Fade);

TableView.EndUpdates();

ただし、セクション 1 とその行のみがアニメーション化されます。セクション 2 (行 [2,0]) はすぐに表示され、少しも移動/フェードしません。また、「スローアニメーション」をオンにして確認しました。

このコードの何が問題になっていますか?

編集:言及するのを忘れていましたが、InsertRowsコールを省略した場合にも問題が存在します。サムの回答によると、これは不要です。

4

2 に答える 2

2

理由がわかりました。呼び出されるUITableViewSourceたびに新しいインスタンスを作成していました。UpdateTable()テーブルのセクションと行の変更をアニメーション化する際の詳細を除いて、これはすべてうまくいきました。

UITableViewSourceインスタンスを再利用するようにコードを変更したところ、すべてが期待どおりに機能しました。

于 2012-04-27T16:48:40.160 に答える
1

セクションを挿入するとき、個々の行をアニメーション化する必要はありません。挿入セクション コードを呼び出すだけです。また、セクションを削除する場合も同様に、その中の行を削除する必要はありません。

于 2012-04-27T15:35:26.443 に答える