ユーザーが行を挿入および削除できるようにするために、オンに切り替えUITableView
ています。setEditing:animated:
編集がオンになっているときに、新しいinsert new item
行をテーブルに追加してから、編集コントロールを通常のようにアニメーション化する必要があります。insert new item
フェードのようなものを使用して、新しい行がそれ自体でアニメーション化されることは望ましくありません。表示してから、既存のテーブルデータソースの行と同じようにスライドさせます。
ただし、現在のコードの結果として何が起こっているかを示します(クリックすると拡大表示されます)。
一番上の行は私が望むことをします-それは単にスライドして削除アイコンがフェードインします。それが消えると、削除アイコンはフェードアウトし、行は再び拡大します。
2番目の行は、自分でテーブルに追加した非データソース行です。表示されると、まったくアニメーション化されません。挿入アイコンと行が同時に表示され、スライドインしません。表示されなくなると、行は適切に拡張されますが、プラスアイコンも一緒にスライドします。アニメーションは行全体で発生し、プラスアイコンではなく、最初の行のように別々に行します。
これが私のコードの簡単な要約ですが、クラスファイルへのリンクを提供する方が良いかもしれないと思います。
ツールバーの編集ボタンを押すと、UIViewController
メソッドを呼び出しますsetEditing:animated:
。この方法では、次のことを行います...
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// keep the table in the same editing mode
[_table setEditing:editing animated:animated];
if (editing) {
[_table insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:_channels.count inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
} else {
[_table deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:_channels.count inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}
}
これは、挿入のアニメーションが行われている場所です。[_table beginUpdate]とendUpdateですべてをラップし、行の挿入だけをラップしてみました。どちらも私が目指しているきれいなアニメーションを生成していないようです。
私が見逃しているかもしれないアイデアはありますか?コードファイル全体はここにあります: