본문 바로가기

Project/MovieClip

셀 재사용으로 인한 이전 데이터 표시되는 문제

4

 

🚒 문제 원인

UITableView와 UICollectionView는 셀을 재사용하기 때문에,
스크롤을 내릴 때 이전에 사용된 셀의 데이터가 그대로 남아 있는 상태에서 새로운 데이터가 적용됨.

 

🛠 해결 방법

  1. prepareForReuse() 메서드 추가
    • 셀을 재사용할 때 기본 상태로 초기화하여 이전 데이터가 남지 않도록 함.
  2. 컬렉션 뷰 셀에서 prepareForReuse() 구현
    • UIImageView, UILabel 등의 UI 요소를 기본 상태로 초기화.

 

📌 수정 코드 (HomeFeedCollectionViewCell.swift)

class HomeFeedCollectionViewCell: UICollectionViewCell {
    
    ...
    
    // ✅ prepareForReuse() 추가 -> 셀 제사용 문제 해결
    override func prepareForReuse() {
        super.prepareForReuse()
        posterImageView.image = nil
        titleLabel.text = nil
        genreLabel.text = nil
        releasedDateLabel.text = nil
    }
    ...
}

 

✅ 설명

  1. prepareForReuse()를 구현
    • 셀 재사용 시 기본 상태로 초기화 (posterImageView.image = nil, titleLabel.text = nil)
    • 이전 데이터가 남아있지 않도록 방지.
  2. configureCollectionView(_:)에서 Any 타입을 받아서 영화, TV, 사람 정보 구분
    • MovieResult, TVResult, PeopleResult 각각에 맞게 UI 설정.