2012-01-09 22 views
2

問題が少しあります。リロード時に編集コントロールが消える

私はグループ化されたモードでUITableViewを持っています。テーブルは常に編集モードになるように設定されていますが、うまくいきます。すべての行が削除可能です。行がインデントされ、私のすべてのUITableViewCellEditControlsが素晴らしい表示されます。

行は実際に私は私のデータソースを更新してから呼び出して削除される際に問題がある:

deleteRowsAtIndexPaths: 
reloadRowsAtIndexPaths: //needs to get called because of table aesthetics 

リロードが発生した後、(私も、単純なreloadDataを試してみた)私のUITableViewCellEditControlsのすべて(マイナス記号のある赤い円など)が消える!行はインデントされていますが、消えています。

私はこのポストの提案を試してみた:

UITableViewController canceling Edit mode animation when calling [table reloadData] inside (void)setEditing

しかし、運を。

本当に助かりますか?

+0

私はカスタムUITableViewCellを使用していますが、それは問題の一部であるかもしれないと思っていましたが、行っていません。私はちょうど古いUITableViewCellを使用して物事を変更し、編集コントロールはまだ消えています。 – capikaw

答えて

0

コードを見ることなく、私はいくつかの提案があります。

AppleのUITableView Class Referenceによると:ReloadDataの下で、それは言う:

呼び出し、この方法は、細胞、セクションのヘッダーとフッター、インデックス配列を含むテーブルを、構築するために使用されたすべてのデータをリロードし、そうしますに。効率を上げるために、テーブルビューは表示されている行のみを再表示します。リロードの結果としてテーブルが縮小する場合、オフセットを調整します。テーブルビューのデリゲートまたはデータソースは、テーブルビューにデータを完全に再ロードさせたい場合にこのメソッドを呼び出します。これは特にbeginUpdatesとendUpdatesの呼び出し BLOCKQUOTE

行の挿入および削除時に呼び出されるべきではないで実装アニメーションブロック内で、行を挿入または削除する方法で呼び出されるべきではありません。

それは、あなたがそれゆえ、私は次のメソッドがすでに実装されていると仮定しています、彼らは個々のセルを削除することができているように思えるから:あなたのcommitEditingStyleでtableView:editingStyleForRowAtIndexPath:tableView:commitEditingStyle:forRowAtIndexPath:を、あなたはちょうどこのようなものでdeleteメソッドを呼び出すべきです:

これにより、リロードデータが不要になります。アニメーションを表示したくない場合は、例で示したフェードの代わりに、アニメーションの列挙子を使用することができます。

しかし、あなたはまだあなたがすべてのセルの削除後にデータを再ロード行う必要があると考えられる場合は、多分、うまくいけばperformSelector:afterDelay:

でそれを試してみてください、このTIDビットに役立ちます!

+0

こんにちはBittu、情報ありがとう!私は、行を挿入/削除する際にリロードコールをしてはならないことを認識していませんでした。なぜテーブルがバグを起こしているのかの答えです。問題はこれです:私は完全にシャドーされた上、中、下の行を含む私のグループ化されたuitableviewの外観をカスタマイズしています。審美的な要件のために、上部と下部の行(特にドロップシャドウのため)は、中間の行より10px大きい必要があります。ユーザーがTOP行を削除すると、2行目が一番上の行になります。つまり、高さと背景イメージを更新する必要があります。簡単な方法はありますか? – capikaw

+0

あなたはいくつかの道を行くことができます。 KVOを使用すると、上と下のドロップシャドウのサイズを監視し、それに応じて調整することができます。また、セクションのヘッダーとフッターの一部としてそのドロップシャドウの一部を配置する方法があるかもしれないので、最初と最後の行に付けられたように見えます。ちょうどそこからいくつかのアイデアを投げて試してみてください。 – Bittu

関連する問題