UICollectionView & CollectionViewCell

이재영·2023년 1월 6일
0

CollectionView

해당 뷰는 데이터의 배치가 자유롭기 때문에
많은 요소들을 보여줘야할때 사용하기 좋다.

ViewControll 요소

  • dataSource : CollectionView의 컨텐츠들 관리,
    cell을 어떻게 표현하고자 할 것인지에 대한 내용,
    프로토콜 내부에 cell에 대한 표현 메소드를 정의할 수 있다.
    (재사용 가능한 셀을 등록하는 것, 그것이 몇번째 인지 알려주는 것 등..)

  • delegate : 앱 개체의 대리자 (공식문서 표현),
    셀에 대한 작업을 수행할 수 있는 메서드를 정의하며
    cell의 행동에 대한 표현이라고 볼 수 있다.
    ( FlowLayout - {프로토콜} : 셀들을 어떻게 배치할 것인가)

CollectionViewCell

CollectionView 내부에 생성한 커스텀 cell들에 대한 표현
아래 코드는 가상 주식 차트를 만들때
Cell의 ViewController을 따로 생성한뒤,
해당 Cell들에 대한 표현들을 정리해 본 것이다.

import UIKit

class StockRankCollectionViewCell: UICollectionViewCell {
    // UI Components 연결
    // UI Components 에 데이터를 업데이트 하는 코드 작성
    
    @IBOutlet weak var rankLabel: UILabel!
    @IBOutlet weak var companyIconImageView: UIImageView!
    @IBOutlet weak var companyName: UILabel!
    @IBOutlet weak var companyPriceLabel: UILabel!
    @IBOutlet weak var diffLabel: UILabel!
    
    func configure(_ stock: StockModel){
        rankLabel.text = "\(stock.rank)"
        companyIconImageView.image = UIImage(named: stock.imageName)
        companyName.text = stock.name
        companyPriceLabel.text = "\(convertToCurrencyFormat(price: stock.price)) 원"
        if stock.diff > 0 {
            diffLabel.textColor = UIColor.systemRed
        }
        else{
            diffLabel.textColor = UIColor.systemBlue
        }
        diffLabel.text = "\(stock.diff)%"

    }
    
    func convertToCurrencyFormat(price: Int) -> String{
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .decimal
        numberFormatter.maximumFractionDigits = 0
        let result = numberFormatter.string(from: NSNumber(value: price))!
        return result
    }
    
}




참고 문서: https://www.zehye.kr/ios/2020/03/15/iOS_collectionView_datasource_delegate/
https://developer.apple.com/documentation/uikit/uitableview/1614955-datasource
https://developer.apple.com/documentation/uikit/uicollectionviewcell

profile
기록

0개의 댓글