새소식

iOS

[iOS/Swift] 셀의 재사용 문제 해결하기 prepareForReuse()

  • -


 

1. 문제 발견

앱잼 도중 선물 모아보기 뷰에서 컬렉션뷰 셀을 직접 custom으로 제작해서 쓰는데,
'받은' 에서 '준'으로 넘어갈 때 마다 전에 쓰인 사진이 잠깐 보이고 해당 이미지로 넘어가는 현상이 나타났다. (이거 너무 거슬렸다)

 

그래서 문제가 뭘까 생각하다가,
'준'으로 넘어가기 전, '받은' 에서도 똑같은 셀을 써주기 때문에, 전에 사용된 셀이 재사용되서 그런게 아닐까 생각해보았다.

 

그렇다면 다시 쓰기전에 초기화를 해줘야 하는데... 방법이 없을까? (모르겠을때는 무조건 구글링을 추천한다)
구글링을 하다보니 prepareForReuse() 라는 함수를 발견할 수 있었다.

 


 

2. prepareForReuse() 란

그럼 도대체 prepareForReuse() 함수가 무엇이길래 이 문제를 해결해주느냐!

Apple 공식 문서에 따르면 tableview의 delegate를 이용해서 셀을 재사용할때 재사용이 가능하도록 셀을 준비해준다는 뜻이다.
셀을 재사용하기 전에 초기화 등의 하고 싶은 특정 액션을 여기에 넣으면 된다.

 

xib로 생성한 custom cell의 swift 파일에 prepareForReuse함수를 override 해준 다음,
안에 셀이 재사용되기 전에 해줘야 할 액션들을 지정해주었다.
이 상황에서는 재사용되기 전에 아무것도 나오지 않았으면 좋겠기 때문에 nil값을 주어 초기화를 해주었다.


그러면 어디에서 호출하는 코드가 필요없이,
이 셀이 재사용이 되기전 자동으로 prepareForReuse() 함수가 호출되어 이미지, 텍스트를 초기화를 해준 뒤,
알맞는 이미지와 텍스트가 들어가게 될 것이다.

 

 

문제해결완료!

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되셨다면 공감 부탁드려요!