KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

iOS - CollectionView Cell 뱃지 만들기
iOS

iOS - CollectionView Cell 뱃지 만들기

2024. 3. 19. 01:58

스토리보드로 컬렉션 뷰 셀 구현 

 

 

셀 클래스 내에서 델리게이트 구현 

protocol ReviewPhotoCellDelegate: AnyObject {
    func didTabDeleteButton(in cell: UICollectionViewCell)
}

class ReviewPhotoCell: UICollectionViewCell {
   
    weak var delegate: ReviewPhotoCellDelegate?
    @IBOutlet weak var reviewPhotoImageView: UIImageView!
    @IBOutlet weak var deleteButton: UIButton!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        
        reviewPhotoImageView.layer.cornerRadius = 2
    }
    
    override func prepareForReuse() {
        super.prepareForReuse()
        
    }
    
    func setupReviewPhoto(image: UIImage) {
        reviewPhotoImageView.image = image
    }
    
    @IBAction func didTabDeleteButton(_ sender: Any) {
        delegate?.didTabDeleteButton(in: self)
    }
}

 

 

컬렉션뷰 데이터 소스 구현 

extension RestaurantDetailViewController: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return viewModel?.reviewImages.count ?? 0
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ReviewPhotoCell", for: indexPath) as? ReviewPhotoCell else { return UICollectionViewCell() }
        cell.delegate = self
        cell.setupReviewPhoto(image: viewModel?.reviewImages[indexPath.row] ?? UIImage())
        return cell
    }
}

 

 

ReviewPhotoCellDelegate 구현 

extension RestaurantDetailViewController: ReviewPhotoCellDelegate {
    func didTabDeleteButton(in cell: UICollectionViewCell) {
        guard let indexPath = reviewPhotoCollectionView.indexPath(for: cell) else { return  }
        
        viewModel?.reviewImages.remove(at: indexPath.item)
        
        reviewPhotoCollectionView.performBatchUpdates {
            reviewPhotoCollectionView.deleteItems(at: [indexPath])
        }
    }
}

 

'iOS' 카테고리의 다른 글

iOS - WebView Crash(EXC_BREAKPOINT)  (0) 2024.05.12
iOS - 웹 인스펙터 콘솔에서 네이티브로 메시지 전달(테스트)  (0) 2024.04.14
iOS - 사파리 웹 인스펙터로 WebView 디버깅 하기  (0) 2024.03.17
컴포지션 레이아웃에서 데이터에따라 섹션 분기처리  (0) 2024.03.10
collectionView - 가로방향으로 셀 3개 넣기  (0) 2024.01.28
    'iOS' 카테고리의 다른 글
    • iOS - WebView Crash(EXC_BREAKPOINT)
    • iOS - 웹 인스펙터 콘솔에서 네이티브로 메시지 전달(테스트)
    • iOS - 사파리 웹 인스펙터로 WebView 디버깅 하기
    • 컴포지션 레이아웃에서 데이터에따라 섹션 분기처리
    KWiOS
    KWiOS

    티스토리툴바