BOID
[iOS] 컬렉션뷰의 델리게이트 & 데이터소스 뽀시기 - HooniOS 본문
안녕하세요, HooniOS입니다. :)
저번 포스팅에서는 컬렉션 뷰의 개념에 대해 간단히 포스팅을 해봤습니다.
이번 포스팅에는 델리게이트 & 데이터 소스에 대해 알아보려고 하겠습니다.
컬렉션뷰의 데이터 소스와 델리게이트
UICollectionView는 사용자의 이벤트를 감지하는 델리게이트 메서드와 화면에 데이터를 보여주는 역할을 하는 데이터 소스 메서드가 있습니다.
우선 제일먼저 데이터 소스 메서드에 대해 알아보려고 합니다.
데이터 소스 메서드
테이블 뷰 컨트롤러의 데이터 소스와 마찬가지로 화면에 보여주기 위해서 사용하는 메서드가 구현되어 있습니다.
이 메서드에는 optional이 아닌 필수로 구현해야 되는 필수 메서드가 2개 있습니다.
한번 한개씩 알아보겠습니다.
* 첫번째
오 이 메서드 어디서 많이 봤던 메서드인데?라고 생각을 하셨을 수도 있는데 맞습니다.
이 메서드는 tableViewControllerDataSource에서 사용했던 것과 비슷한데 역할도 같습니다.
컬렉션 뷰의 셀이 보여줄 개수를 정하는 메서드입니다.
* 두 번째
이 메서드도 tableViewController에서 많이 봤던 메서드입니다. 테이블 뷰 컨트롤러에서 테이블 뷰 셀을 구성하기 위한 메서드였는데요 컬렉션 뷰에서도 같이 사용을 합니다.
이 메서드에서도 마찬가지로 셀의 인스턴스를 만들어 셀을 구성하는데 이때 셀의 인스턴스를 만들 때 재사용 큐를 사용해서 인스턴스를 생성해줘야 합니다.
컬렉션 뷰의 셀 구성을 해주기 위해 사용하는 메서드입니다.
이제 컬렉션 뷰의 델리게이트 메서드에 대해 알아보겠습니다.
델리게이트 메서드
델리게이트 메서드란 사용자의 이벤트에 대한 메서드입니다.
델리게이트 메서드는 데이터 소스 메서드와 달리 필수 메서드가 없습니다. 대표적인 optional메서드 2개를 알아보겠습니다.
* 첫 번째
이 메서드는 사용자가 컬렉션 뷰 셀을 클릭했을 때 발생하는 메서드입니다.
특정 셀을 클릭했을때 원하는 동작( alert 띄우기 ) 같은 것을 구현하고 싶을 때 안에다가 구현을 해주면 됩니다.
* 두 번째
이 메서드가 너무 궁금해서 한 한 시간 동안은 찾아본 것 같은데 엄청 쉬운 거였어요 ㅎㅎㅎ 재밌다!!!!!
이 메서드의 반환 값은 Bool인데요
사용자가 이 컬렉션 뷰의 셀을 클릭했을 때 특정 이벤트(하이라이트)를 나타나게 하려면 true를 반환하면 되고 아무 반응 없게 하려면 false를 반환하면 됩니다.
※그냥 보면 이해가 안 되니깐 간단한 예시로 비교를 해보겠습니다.
셀을 클릭했을 때 indexpath가 출력을 하도록 collectionView(_:didSelectItemAt:)을 설정을 해주고 collectionView(_:shouldHighlightItemAt:)은 각 true, 와 false로 반환해서 어떻게 차이점이 있는지 확인해보겠습니다.
- 왼쪽이 false를 준 것이고 오른쪽이 true를 준 것입니다.
이렇게 보니 확연하게 차이가 나네요 true를 주면 didSelect 델리게이트 메서드의 이벤트 효과를 주게 되고 그렇지 않고 false를 주게 되면 didSelect 델리게이트 메서드의 이벤트 효과를 주지 않게 됩니다.
이렇게 보니깐 차이가 확 보이네요 대체 이게 뭔가 혼자 엄청 끙끙 앓았는데 뭔가 사이다 100개를 마신 느낌입니다!!!!!
결과물은 다음 포스팅에 보여드릴라고 했는데 예제를 보여드리기 위해서 벌써 꺼내게 됐네요 ㅎㅎㅎㅎㅎ
이제 컬렉션 뷰를 한번 구성해보도록 다음에 포스팅에 제가 만들었던 과정에 대해 포스팅을 해보겠습니다. :)
'IOS 시작기' 카테고리의 다른 글
[iOS] UICollectionViewFlowlayout 설정 & 적용하기 - HoonIOS (1) | 2021.05.05 |
---|---|
[iOS] 컬렉션뷰 데이터소스& 델리게이트 구현해보고 뽀시자! - HoonIOS (0) | 2021.05.04 |
[iOS] 컬렉션 뷰란 - HoonIOS (0) | 2021.05.04 |
[iOS] 데이터 포맷(JSON방식) 2 / 2 - HoonIOS (0) | 2021.05.03 |
[iOS] 데이터 포맷(XML방식) 1 / 2 - HoonIOS (0) | 2021.05.01 |