7

UICollectionViewをYESに設定して使用する場合、allowsMultipleSelection選択できる項目は1ダースだけです。UICollectionViewDelegate呼び出しを停止しcollectionView:didSelectItemAtIndexPath:ます。

非常にランダムに見えます。いくつかのアイテムを選択し、下にスクロールしてさらにいくつかを選択すると、ある時点でそれ以上アイテムを選択できなくなります。

セルが小さいほど、より多くのアイテムを選択できるようです。セルが大きいほど、機能しなくなる前に選択できる項目が少なくなります。

4

1 に答える 1

16

以前の回答は機能しますが、スーパーを呼び出さなかったことが原因である可能性があることを発見しました。のドキュメントではこれについて言及していませんが、同じ方法UICollectionReusableViewののドキュメントでは言及しています。UITableViewCell

- (void)prepareForReuse
{
    [super prepareForReuse]
    // Your code here.
}

古い答え:


これはのバグである可能性がありますUICollectionView

何が起こっているのかというと、以前に選択されたセルが再利用され、選択された状態を維持しているということです。コレクションビューがselected「NO」に設定されていません。

prepareForReuse解決策は、セルの選択された状態をリセットすることです。

- (void)prepareForReuse
{
    self.selected = NO;
}

再利用されたセルが選択されている場合、コレクションビューは呼び出されたselected後に「YES」に設定されます。prepareForReuse

これはUICollectionView、それ自体で行うべきことです。ありがたいことに、解決策は簡単です。残念ながら、私は自分の選択した状態を追跡することで、このバグを回避するために多くの時間を費やしました。セルが小さい別のプロジェクトに取り組むまで、なぜそれが起こっているのかわかりませんでした。

于 2012-11-25T23:00:07.047 に答える