본문 바로가기

iOS/swift

[swift] UICollectionView 사용법

반응형

안녕하세요~! coit.kai입니다.
IOS개발에 꼭 필요한 UICollectionView를 사용해 보겠습니다. 같이 가실까요~~~!!! ㄱㄱ

UICollcectionView를 할 때 중요 몇가지 내용을 보겠습니다.
1. 화면과 소스 연결
2. Procotol사용
  1) UICollectionViewDataSource : 1> 셀을 몇개 표시할까요?
                                             2> 어떤 셀을 표시할까요?
                                             3> 헤더뷰를 어떻게 표시할까요?
  2) UICollectionViewDelegate : 셀이 눌렸을 때 어떻게 처리할까요?
  3) UICollectionViewDelegateFlowLayout : 셀을 크기 어떻게 할까요?, 크기에 따라 배치가 달라짐

실제 소스에서 사용되는 모습을 보도록 하죠!

extension MyViewController: UICollectionViewDataSource {
    // 몇개 표시 할까요?
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 0 // 표시 갯수
    }
    
    // 어떤 것을 셀로 사용할까요? 
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        return UICollectionViewCell() //셀로 사용할 것 
    }
    
    // 헤더뷰 어떻게 표시할까?
    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        switch kind {
        case UICollectionView.elementKindSectionHeader:
            return UICollectionReusableView()
        default:
            return UICollectionReusableView()
        }
    }
}

extension MyViewController: UICollectionViewDelegate {
    // 클릭했을때 어떻게 할까?
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    }
}

extension MyViewController: UICollectionViewDelegateFlowLayout {
    // 셀 사이즈 어떻게 할까?
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize.zero
    }
}

 

위 소스와 같이 Protocol을 사용합니다.
1. UICollectionViewDataSource
1> collectionView(_ collectionView: UICollectionView, numberofItemsInSection section: Int) -> Int {} 
    몇개의 셀을 표시할까요?
2> collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {}
    어떤 것을 셀로 사용할까요?
3> collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath: IndexPath) -> UICollectionReusableView {}
     헤더를 어떻게 표시할까요?
2. UICollectionViewDelegate
1> collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {}
     클릭했을 때 어떻게 할까요?
3. UICollectionViewDelegateFlowLayout
1> collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {}
     셀 사이즈를 어떻게 할까요? 사이즈에 따라서 배치가 됩니다.

이렇게 Protocol과 그 안에 포함된 함수를 사용하면 됩니다.
이거 다 외울 수가 없으니까 자주 반복하고 Protocol이 선언된 곳으로 넘어가서 필요한 함수를 보고 복사해서 사용하도록 하면 되겠어요~!

이상입니다. 오늘도 좋은 하루 되세요~~ ^^ 끝.

반응형

'iOS > swift' 카테고리의 다른 글

[swift] Dictionary initializer with grouping  (0) 2021.08.06
[swift] 컨트롤러간 화면 전환  (0) 2021.08.04
GCD(Grand Central Patch)  (0) 2020.07.18
URLSession  (0) 2020.07.04
Swift error: missing argument label 'name:' in call  (0) 2020.06.08

]