안녕하세요~! 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 |