0

テーブル ビューの非常に奇妙な動作を確認しました。UITableViewEditingStyleDelete を有効にしました。これにより、編集モードで tableView の左側に赤い「-」コントロールが表示されます。そのコントロールをタップすると、右側に削除ボタンが表示され、「-」コントロールがオンになります。すべて問題ありませんが、それを数回行うと、「-」コントロールが水平になることがありますが、削除ボタンが表示されます。 ここに画像の説明を入力

それはtableViewのリフレッシュと関係があるのでしょうか? 編集モードでそれらを無効にする必要がありますか?

誰かがそれに似たものを見たことがありますか、またはそれを解決する方法を知っていますか?

2013 年 5 月 20 日の更新: 各 NSFetchedResultControllerDelegate コールバックで、tableView が編集中かどうかを確認し、編集中の場合は tableView を更新しません。これにより、そのバグが修正されます。tableView が通常モードでの編集から戻ったら、[tableView reloadData] を呼び出して、tableView を最新の状態にし、最新の情報を含めます。

しかし、これはアニメーションを破壊します。アニメーションを失うことなく tableView を更新するにはどうすればよいですか? 問題は、tableView が編集モードのときに何が起こったのかを認識していないことです。

ご助力ありがとうございます!

リナード

4

1 に答える 1

0

アニメーションの消失は、編集モードでの更新の非アクティブ化の一部にすぎません。もう 1 つは、編集モードで 1 行を追加または削除する場合、[tableView reloadData] を実装する必要があることです。より良い解決策は、NSFetchedResultController を介してセル コンテンツの更新を無効にすることだと思います。テーブルのコンテンツは頻繁に変更されますが、セルの編集中はそれほど重要ではありません。また、テーブルが非アクティブ化されていないセルを追加または削除できる場合、tableView の行とセクションは更新されたままになるため、[tableView を使用して tableView 全体ではなく、編集モードの最後に行を更新するだけで済みます。リロードデータ]。このソリューションでは、すべてのアニメーションがあり、

更新: いろいろ試してみたところ、以前と同じようにバグが表示されることがわかりましたが、それほど頻繁ではありませんでした。問題は、 [tableView beginUpdates] と [tableView endUpdates] が以前と同じ方法で呼び出され、これがバグの原因になる可能性があることだと思います。[tableView reloadData] に戻すことはなく、編集中に更新を非アクティブ化することもありません。これが、これまでに見つけた唯一の方法であり、アニメーションが失われた場合でも機能します。

誰かが追加のアイデアや改善点を持っている場合は、お知らせください。

リナード

于 2013-05-21T23:15:46.987 に答える