13

更新: これは iOS 8.0 以降で修正されました。詳細については、私の受け入れられた回答を参照してください。

行をスワイプして削除できるiOS 7 UITableViewがあります。私は削除を処理しています:

tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

と:

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];

テーブルの最後の行を除いて、すべての行が正しいアニメーションで削除されます。ユーザーがスワイプして削除ボタンを表示し、それをタップすると、セルが画面から完全に左にスライドしますが、削除ボタンが表示されたままの白いセルが数十分の数秒間残った後、突然消えます。これはすべてのセルで発生しているように見えますが、他のすべてのセルには下にスライドする行があり、それを覆っています。

これは、問題の行がテーブル内の唯一の行である場合にも発生し、行だけではなくセクション全体を削除します。セクション ヘッダーはスライドして忘れ去られますが、削除ボタンのある白いセルは少しの間残ります。

この最後のセルには、他のセルと同じ UITableViewRowAnimationTop アニメーションが必要です。何が起こっているかについてのアイデアはありますか?

4

5 に答える 5

4

更新: このバグは iOS 8 で修正されました。最後のセルの削除は左にスライドし、削除ボタンは上にスライドし、背景はクリアになります (アニメーションの完了後に突然消える白い領域はなくなりました)。iOS 8 未満で実行する場合は、以下の iOS 7 修正が引き続き必要です。

iOS 7 の修正: 十分な高さのセクション ヘッダー ビューを使用してテーブルの最後に別のセクションを追加することで、この問題を修正できました。このヘッダー ビューは、テーブルの下部にある空白の領域のように見えるようにスタイル設定されているため、そこにあることがわかりません。テーブルの最後の行が削除されると、この空白のセクション ヘッダーが上にスライドし、そこにある削除ボタンを非表示にします。これはちょっとしたハックですが、テーブル ビューのバグのようです。

于 2014-01-09T23:33:42.567 に答える
0

回避策は、テーブル ビューの最後の行の下に常に空の行を維持することだと思います。それはトリックを行います。

于 2013-12-22T08:10:06.657 に答える