6.0より古いiOSのバージョンでは、テーブルビューはtableView:didEndDisplayingCell:forRowAtIndexPath:
メッセージを送信しません。あなたがUITableViewCell
のサブクラスを使用している場合
、あなたはdidMoveToWindow
をオーバーライドすることでのiOSの古いバージョンで同じ効果を得ることができます。
- (void)didMoveToWindow {
if (self.window == nil) {
// I have been removed from the table view.
}
}
あなたが戻ってあなたのセル(弱いかunsafe_unretained)の参照を与える必要があるかもしれませんデリゲートにメッセージを送信できるように、テーブルビューのデリゲートに渡します。
ただし、iOSのすべてのバージョンでdidMoveToWindow
にのみ依存することはできません。 iOS 6以前では、テーブルビューは常にテーブルビューのセルをサブビューとして削除してから再利用していたため、再利用する前に常にdidMoveToWindow
が返されていました。ただし、iOS 6以降、テーブルビューではをのサブビューとして削除せずに再利用できます。テーブルビューはセルのフレームを変更して新しい位置に移動します。これは、iOS 6以降では、ではなく、はいつも再利用される前にdidMoveToWindow
を受け取ることを意味します。
セルのサブクラスにdidMoveToWindow
を実装し、デリゲートにtableView:didEndDisplayingCell:forRowAtIndexPath:
を実装し、両方が呼び出された場合、または1つだけ呼び出された場合に動作することを確認してください。
あなたはself' 'に' UITableViewDelegate'と設定表ビューのデリゲートを追加しましたか? –
はい、具体的に私の質問で言及しました:) – aryaxt
あなたがテストしているiOSのバージョンは? –