を編集状態にある細胞を返します(dequeueReusableCellWithIdentifier
から返された)新たに表示セルは次のようになります。dequeueReusableCellWithIdentifierは、次のような問題は、前の項目を削除し、スクロール後、アイテムを削除するためのUITableViewのスライドに編集インターフェイスを使用して7</p> <p>にIOSバージョンでは発生しないIOS 7に
https://dl.dropboxusercontent.com/u/87749409/Screenshot%202013.09.27%2016.08.30.png
[そのイメージは永遠に利用できるので、ここでの説明だしないことがあります。スクロールした後、新しいセルは、最終的な編集された状態にある、とDELETEボタンはまだ表示され、 f-画面左へ]
さらに、返されたセルには、editing
フラグが設定されています。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
// Find the item that this cell represents
NSDictionary *item = [self itemForRowAtIndexPath:indexPath];
if (!item) return;
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop];
[tableView endUpdates];
// Remove it from the data store
[Inventory removeInventoryItem:item];
}
}
私がハッキングされ溶液でこれを克服することができました:
私はセルを削除するために使用しているコードは次のようになります。コード(ハックあり)は、編集状態ではない新しいセルが生成されます(whileループ)。ハック(whileループ)では、新しいセルが生成されます。これはメモリの無駄につながりますが、正しい結果が得られます。
編集状態をリセットするには、prepareForReuse
メソッドで必要なことがあるのだろうかと思います。現在、私のprepareForReuse
メソッドは、内部のコントロール(ラベルなど)をデフォルト値でのみ初期化します。私は両方のsetEditing:animated:
を呼び出して試してみた
は、UITableViewCellのとのUITableView prepareForReuse
で、セルを削除し、いつでもdequeueReusableCellWithIdentifier:
はまだediting
フラグがセットされていたセルを返したが、何も問題が解決していないようにみえます。
ありがとう、レオ、それでした!私は過去2日間、この問題(他のいくつかと一緒に)を調べていたので、私は実際にスーパーのprepreForReuseと呼ばれた実装のどれも見ていなかったので、私はそれを考えなかった(私は二重チェックした)。苦行として、私はそうする必要があるそれらのSOの質問とブログにメモを投稿します。 – pauln
乾杯!それはドキュメンテーションでははっきりと述べていますが、実際にはそれはまれです。 –
BEFORE: "なぜドキュメントを読んでいるのですか?これが何であるかはわかっています。再利用する前にセルをデフォルト値にリセットできるようにするために呼び出されています。アフター:「お元気ですか、私の額にこのフラットスポットがあります...」 – pauln