UITableViewCell のサブビューであるカスタム UIView があります。セルが描画されると、UIView サブクラスで drawRect: を正しく呼び出して、カスタム ビューも描画されます。セルがリロードされると、ビューが正しく描画されます (drawRect:
が呼び出されます)。
特定のイベント (タイマーなど) が発生すると、セル全体をリロードせずにビューを再描画したいと考えています。(セル内のビューはこれだけではありません。)
ただし、サブビューを呼び出しsetNeedsDisplay
ても何も起こりません。
私のビューdrawRect:
が呼び出されると、結果の画像がバッキングのどこかにキャッシュされ、setNeedsDisplay
そのバッキングが画面に再描画されるようになると思いますが、drawRect:
呼び出しが再び呼び出されることはありません。
drawRect:
セルが作成された後に二度と呼び出されないのはなぜですか?
編集: セルのサブビューは nib から作成されます。つまり、UIViewController が nib からロードされ、そのビューが UITableViewCell に追加されます。
(コードで作成された) nib からロードされていないカスタム ビューを使用してテスト ケースを最初から作成しましたが、期待どおりに動作setNeedsDisplay
し、drawRect:
呼び出しが発生します。これは、.xib ファイルで設定されたものか、ビューが nib からロードされたときに別の方法でビューに発生するものでなければなりません。