0

メソッドを呼び出しcellForItemAtIndexPath:ましたdidSelectItemAtIndexPath:。その結果、didSelectItemAtIndexPath:セルごとに 1 回だけ呼び出されました。したがって、セルを初めてタップしてから別のセルをタップできますが、最初のセルをもう一度タップすると、didSelectItemAtIndexPathもう呼び出されません (ただし、他のすべての「新しい」セル)。

今は電話をかけcellForItemAtIndexPath:なくなりdidSelectItemAtIndexPath:、期待どおりに機能するようになりました。しかし、なぜ私はこれを行うことが許可されていないのですか? これには何か理由がありますか?

4

1 に答える 1

1

コレクション ビューはセルのインスタンスをキャッシュしており、インデックス パスでセルを作成するときにそれらをデキューします。コレクション ビューは、これを行うときに何が起こっているかについていくつかの仮定を行っているため、同じインデックス パスでセルに対して複数の要求を出し始めると、奇妙なことが起こり始めます。これにより、視覚的な問題が発生したり、相互作用の問題が発生したりすることがあります。

指定したインデックス パスでセルを取得する場合は、独自のデリゲート メソッドを使用する代わりに、コレクション ビューに直接問い合わせる必要があります。これにより、新しいセルではなく、画面上の既存のセルが表示されます。

于 2016-02-11T09:37:04.000 に答える