8

UICollectionViewCell実際の画面で a が表示されたら知りたいです。cellForRowAtIndexPathこの時点ではセルが実際に表示されていないため、不十分です。 didEndDisplayingCellセルがビューから削除されたときに呼び出されるため、不十分です。

UITableViewDelegate過去に同様のものに役立つとわかったwillDisplayCellメソッドがありますが、 には存在しないようUICollectionViewDelegateです。

セルが画面に表示されるタイミングを確認するにはどうすればよいですか?

4

2 に答える 2

6

のサブクラスを作成しUICollectionViewCellます。didMoveToWindowメソッドをオーバーライドします。

- (void)didMoveToWindow {
    if (self.window != nil) {
        // I am now in the window's view hierarchy and thus “on screen”.
    }
}

技術的には、セルがウィンドウの表示範囲外にあるか、別のビューで覆われているために、セルがまだ表示されていない可能性があります。しかし、通常はどちらも当てはまりません。

また、セルが再利用される場合、ビュー階層から削除されたり、再度追加されたりしない可能性があることにも注意してください。コレクション ビューは、セルのフレームを変更するだけです。(iOS 6.0 のテーブル ビュー セルでこれが行われることはわかっています。) その場合、セルが別の項目で再利用されてもメッセージは表示されUITableViewません。didMoveToWindow

セルが表示されるタイミングを知りたい理由を説明していただければ、より適切な回答が得られる可能性があります。

于 2013-06-25T18:45:58.563 に答える