Delegate 관련 메서드

이재영·2023년 1월 11일
0

delegate

공식 문서에 따르면 모든 앱에는 앱 관련 메시지에 응답하기 위한
앱 대리자 개체가 있어야 한다고 한다.
UICollectionViewDelegate 이란 collectionView에서 항목과의
사용자 상호 작용을 관리하는 데 사용하는 개체에서 채택한 메서드라고 한다.

아래 코드는 ViewController 에서
delegate protocal을 채택했다고 알려주고
그 아래에 채택한 프로토콜을 구현해보았고,
내용은 셀의 사이즈를 나타낸 것이다.

UICollectionViewDelegate

import UIKit

class StockRankViewController: UIViewController {
    
    let stockList: [StockModel] = StockModel.list

    @IBOutlet weak var CollectionView: UICollectionView!
    
    // Data, Presentation, Layout
    // Data : 어떤 data 사용할것인가 -> StockModel 파일에 저장한 것들의 리스트(stockList)로 사용
    // Presentation : 셀을 어떻게 표현할 것인가
    // Layout : 셀을 어떻게 배치할것인가
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        CollectionView.dataSource = self
        CollectionView.delegate = self
        
    }
}

// delegate protocal 구현
extension StockRankViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        // width = collectionView
        // height = 80정도
        
        return CGSize(width: collectionView.bounds.width, height: 80)
    }
}

  • 추가 : delegate protocal을 구현한 viewController의 확장 메서드에서
    반환값인 CGSize는 너비와 높이 값을 포함하는 구조체이다.
    주로 뷰의 크기(size)를 설정할 때는 CGSize를 사용한다.




참고자료 및 자세한내용
https://developer.apple.com/documentation/uikit/uicollectionviewdelegate
https://kasroid.github.io/posts/ios/20201010-uikit-delegate-pattern/
https://developer.apple.com/documentation/uikit/uiapplication/1622936-delegate
https://stickode.tistory.com/373

profile
기록

0개의 댓글