まいまいワークス

主にiPhoneアプリの開発で考えた事、調べた事、感じた事などを記していきます。

UICollectionViewCellをプログラム側から選択状態にする

[self.collectionview reloadData];

上記の命令でUICollectionViewをリロードした場合、 すでに選択されていたセルの選択状態が解除されてしまいます。

そこで、あらかじめ選択・未選択の属性を配列などに保存しておき、

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

【中略】

    cell.selected = YES;

【中略】
}

と指定してしまうと その後、当該セルをタップしても反応しなくなるという問題が出てきます。

その場合は、以下のようにするとセルが反応してくれます。

cell.selected = YES;
[self.collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];

   

【参考】 http://stackoverflow.com/a/15414208