적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/iOS

UICollectionViewDelegate

hongssup_ 2022. 9. 15. 15:51
반응형

UICollectionViewDelegate

: manages user interactions with the collection view’s contents, including item selection, highlighting, and performing actions on those items. The methods of this protocol are all optional.

컬렉션뷰 셀 선택 및 선택 후 액션 등에 관련한 메서드들을 다루는 delegate로, 이 프로토콜의 모든 메서드는 옵셔널이다. 

 

Managing the Selected cells 

didSelectItemAt

: 선택된 cell의 index path를 delegate에게 알려주는 메서드. 

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

컬렉션뷰 셀 선택시 호출되며, 가장 흔히 사용되는 메서드.  

It does not call this method when you programmatically set the selection. 이라고 되어 있는데, 이건 무슨 말일까. 

collectionView.selectItem(at: _) 호출하면 작동이 안된다는건가? 

 

didDeselectItemAt

: 선택 해제된 cell의 index path를 delegate에게 알려주는 메서드.

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

문제의 이 메서드.. 당연히 선택한 cell을 다시 눌러 선택 해제할 때 쓰이는 건 줄 알았는데 아.니.다.

여기서 선택 해제란, cell 한개만 선택 가능할 때 선택된 cell 에서는 didSelectItemAt 이 호출되고, 기존에 선택되어있던 cell 에서didDeselectItemAt 이 호출되는 것이었다... (자동 선택 취소 느낌으로?)

그렇다면 이 함수는 multiple selection일 때는 의미가 없는 것인가.. 

 

728x90
반응형