[Swift] CollectionViewで初回起動時に前回選択していたセルを選択状態にする

ITSwift

ColletionView cellForItemAt で cell を生成する際に selectItem を使用します。

didSelectItemAt、didDeselectItemAt は ColletionView が表示され、ユーザーがcellを選択したり、選択を解除したらその位置を取れますが、初回起動時はユーザーのアクションがありません。

そこで cellForItemAt でcellを生成する際に selectItem を使えば、選択状態にしたい cell の indexpath を指定することで選択した状態にすることができます。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
    if let cell: ColorCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: colorCollectionCellId, for: indexPath) as? ColorCollectionViewCell {
        
        // 選択状態になる条件を書く
        if () {
            collectionView.selectItem(at: indexPath, animated: false, scrollPosition: [])
        }
        
        return cell
    }
    
    return UICollectionViewCell()
}

これで前回選択したセルの情報をUserDefaultsなどに保持しておいて、それに合致する条件の cell に対して、selectItem すれば、初回起動時でも cell を選択状態にすることができます。

以上になります。

スポンサーリンク

Posted by nobuhiro harada