티스토리 뷰

dequeueReusableCell withReuseIdentifier 로 collectionview를 구성하게되면 화면에서 벗어난 cell을 reuse하는 경우가 생긴다.

앱 개발에 있어 이것이 문제를 일으킨 경우로는

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

를 사용해 cell선택시 해당 cell이 선택됐음을 표시하는 기능을 구현하던 중, a번 셀을 선택했는데 화면밖에 있어 표시되지 않던 b번 셀이 같이 선택 되는 오류가 있었다. (imageview의 'checkmark.circle.fill' 과 'circle' 을 toggle하여 선택됨을 표시하는 방식이었다.)

이를 해결하기 위해 

1) 각 indexpath.item에 맞는 Bool값을 갖는 배열을 생성한다.

2) cell 선택 시 배열에서 해당 index에 해당하는 Bool 값을 toggle해준다.

3) 적절한 때에 collectionview를 reloadData() 해준다.

ex)

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        

        selectedArray[indexPath.item].toggle()

        

        collectionView.reloadData()

    }

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함