티스토리 뷰

iOS

[iOS] UICollectionView 톺아보기 - 2

국산 앨런 2019. 8. 22. 10:51

이전에서 UICollectionView의 구성요소와 레이아웃, 구현을 위한 클래스, 프로토콜을 톺아보았습니다 ;)

 

이번에는 UICollectionViewCell, UICollectionViewDataSource, UICollectionViewDelegate에 대해서 알아보겠숩니다.

 

예제는 다음다음시간에...

 

UICollectionViewCell

컬렉션뷰 셀의 구성요소 관련 프로퍼티

//셀의 콘텐츠를 표시하는 뷰입니다.
var contentView: UIView

/*셀의 배경을 나타내는 뷰입니다. 
이 프로퍼티는 셀이 처음 로드되었을 경우와 셀이 강조
표시되지 않거나 선택되지 않을 때 항상 기본 배경의 역할을 합니다.*/
var backgroundView: UIView?

/*셀이 선택되었을 때 배경뷰 위에 표시되는 뷰입니다. 
이 프로퍼티는 셀이 강조 표시되거나 선택될 때마다 기본 배경 뷰인
backgroundView를 대체하여 표시됩니다. */
var selectedBackgroundView: UIView?

 

컬렌션뷰 셀의 상태관련 프로퍼티 

//셀이 선택되었는지를 나타냅니다. 셀이 선택되어있지 않다면 이 프로퍼티의 값은 false입니다.
var isSelected: Bool

//셀의 하이라이트 상태를 나타냅니다. 하이라이트 되어있지 않다면 기본 값은 false입니다.
var isHighlighted: Bool

 

컬렌션뷰 셀의 드래그 상태 관련 메서드

//셀의 드래그 상태가 변경되면 호출됩니다.
//none, lifting, dragging의 3가지 열거형으로 상태를 갖습니다.
func dragStateDidChange(_:)

 

컬렌션뷰 셀 vs 테이블뷰 셀

  테이블뷰 셀 컬렉션뷰 셀
구조 콘텐츠 영역, 액세서리뷰 영역 배경뷰 영역, 콘텐츠뷰 영역
스타일 디폴트 스타일 o 디폴트 x
레이아웃 목록형태 매우 다양

 

UICollectionView DataSource, UICollectionView Delegate

 

 

 

UICollectionView DataSource

컬렉션뷰 데이터소스 객체는 컬렉션뷰와 관련하여 가장 중요한 객체이며, 필수로 제공해야 합니다.

 

컬렉션뷰의 콘텐츠(데이터)를 관리하고 해당 콘텐츠를 표현하는 데 필요한 뷰를 만듭니다. 데이터소스 객체를 구현하려면 UICollectionViewDataSource 프로토콜을 준수하는 객체를 만들어야 합니다.

 

/**필수 메서드**/

//지정된 섹션에 표시할 항목의 개수를 묻는 메서드.
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

//컬렉션뷰의 지정된 위치에 표시할 셀을 요청하는 메서드.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
 

/**주요 선택 메서드**/

//컬렉션뷰의 섹션의 개수를 묻는 메서드. 이 메서드를 구현하지 않으면 섹션 개수 기본 값은 1.
optional func numberOfSections(in collectionView: UICollectionView) -> Int

//지정된 위치의 항목을 컬렉션뷰의 다른 위치로 이동할 수 있는지를 묻는 메서드.
optional func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool

//지정된 위치의 항목을 다른 위치로 이동하도록 지시하는 메서드.
optional func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)
델

 

 

UICollectionViewDelegate

컬렉션뷰 델리게이트 프로토콜은 컬렉션뷰에서 셀의 선택 및 강조표시를 관리하고 해당 셀에 대한 작업을 수행할 수 있는 메서드를 정의합니다. 이 프로토콜의 메서드는 모두 선택사항입니다.

 

//지정된 셀이 사용자에 의해 선택될 수 있는지 묻는 메서드.
optional func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool

//지정된 셀이 선택되었음을 알리는 메서드.
optional func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

//지정된 셀의 선택이 해제될 수 있는지 묻는 메서드. 선택 해제가 가능한 경우 true로 응답하며, 그렇지 않다면 false로 응답.
optional func collectionView(_ collectionView: UICollectionView, shouldDeselectItemAt indexPath: IndexPath) -> Bool

//지정된 셀의 선택이 해제되었음을 알리는 메서드.
optional func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath)

//지정된 셀이 강조될 수 있는지 묻는 메서드. 강조해야 하는 경우 true로 응답하며, 그렇지 않다면 false로 응답.
optional func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool

//지정된 셀이 강조되었을 때 알려주는 메서드.
optional func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath)

//지정된 셀이 강조가 해제될 때 알려주는 메서드.
optional func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath)

 

...

 

ps. 컬렉션뷰는 아직 끝나지 않았다..!

 

 

참고 : https://www.edwith.org/boostcourse-ios/lecture/16908/

'iOS' 카테고리의 다른 글

[iOS] UICollectionView 톺아보기 - 4  (2) 2019.08.22
[iOS] UICollectionView 톺아보기 - 3  (0) 2019.08.22
[iOS] UICollectionView 톺아보기 - 1  (0) 2019.08.22
[iOS] Navigation Item 톺아보기  (0) 2019.08.22
[iOS] ScrollView 톺아보기  (0) 2019.08.22
댓글
공지사항