UICollectonViewScrollPositionの.noneについての質問です。
UICollectionViewを用いて、
あるセルがAという要素を持っているとします。このセルを選択した時に、画面外の他のセルの中で(データソース内で、といった方がいいかもしれません)Aという要素を持っているセルがあればそのセルのisSelectedをtrueにしたいと思っています。
isSelectedをONにするには、対象のセルがreuseされて生成されるタイミングでselectItemを呼ぶべきと思いますが、そのselectItemメソッドは引数としてUICollectionViewScrollPositionを渡します。このUICollectionViewScrollPositionには.noneというcaseがなく、必ず他のcaseを選択してやらねばなりません。
しかし他のcaseを渡してしまうと、スクロールをしてセルが生成される瞬間に動きが止まってしまいます。この動きが止まるのを回避したいのですが
方法が思いつきません。
swift
1func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 2 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) 3 4 if セルが要素Aを持っている { 5 collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .noneがあれば、、、) 6 } 7 return cell 8 }
このようなコードになっています。
どうか解決できるようご助言お願い致します。
セルを選択すると、そのセルではなく別のセルを選択状態にしたいということでしょうか?また、選択したセル以外で「Aという要素を持っているセル」は1つしか無いのでしょうか?
セルを選択すると、そのセルも選択状態にしています。そして、選択したセル以外で「Aという要素を持っているセル」は複数あります。なので要するに、セルが選択されたらそのセルを選択状態にします。そのセルがAという要素を持っているので、現在表示されていないセルの中でAという要素を持っているものを選択状態にしたいと考えています。表示されていないセルを選択状態にすることはできないので、生成されるタイミングかと思っています。コメントありがとうございます。
回答1件
あなたの回答
tips
プレビュー