Custom Cell을 재사용할 때 생기는 문제점
안녕하세요. iOS 프로젝트를 진행하다보면 TableView
를 상당히 많이 사용하게 되는데요. 오늘은 이러한 TableView
를 사용할 때, 그 중에서도 Custom Cell을 재사용할 때 생기는 사소한(?)문제점과 이에 대한 해결 방법을 알아보도록 하겠습니다.
먼저 어떤 문제점이 있을지 살펴보도록 하겠습니다.
문제점
주식의 정보를 보여주는 어플리케이션이 있을 때 사용자가 즐겨찾기를 해놓은 주식 정보를 다음과 같이 Custom Cell을 사용해 표현을 할 수 있습니다. 간단하게 종목의 이름과 가격 그리고 보유하고 있다면 얼마나 보유하고 있는지도 보여주는 Cell입니다. 만일 즐겨찾기를 해놓았지만 보유하지 않은 종목에 대해서는 옆에 "주" 글자가 보이지 않게끔 한다고 가정해보도록 하겠습니다.
우리는 늘 그렇듯이 cellForRow(at:)
메소드 안에서 다음과 같은 코드를 작성할 것입니다.
그리고 언제나 그렇듯이 dequeueReusableCell
을 활용해 화면에서 사라진 Custom Cell을 재사용하여 보여줄 것입니다.
하지만 재사용을 하는 것에서 하나의 사소한(?) 문제가 생길 수 있습니다. 만일 스크롤을 통해 하나의 Cell이 화면에서 사라지고 그 Cell이 새로운 Cell을 위해 재사용이 되는데 사라진 Cell에 해당하는 종목은 사용자가 보유하여 보유량(~주)이 표현이 되지만 새로 생길 Cell에 해당하는 종목은 보유하고 있지 않으면 보유량을 표시해주지 말아야 하지만 Custom Cell을 디자인할 때는 보유량의 유무와 상관없이. UILabel
을 올리기 때문에 사용자가 보유하고 있는 사라진 Cell의 보유량이 새로 보일 사용자가 보유하고 있지 않는 Cell에 그대로 나타나게 됩니다. 말 그대로 "재사용"을 했기 때문입니다.
해결방법
이와 같은 문제를 방지하기 위해서는 재사용될 때 값이 초기화가 되어야 합니다. 해결 방법에 대한 코드는 Custom Cell의 파일에서 작성해주어야 합니다.
CustomTableViewCell.class
위와 같이 prepareForReuse
함수 안에서 Custom Cell의 프로퍼티들을 초기화해주는 코드를 작성하였습니다. 이렇게 코드를 작성해놓으면 오늘 이야기하는 문제점을 해결할 수 있습니다.
마무리
오늘은 이렇게 간단하게 Custom Cell을 만들어 사용할 때 생길 수 있는 문제점에 대해서 알아보았습니다. Custom Cell을 만들 때는 위의 작업을 반드시 해주는 것이 보다 섬세하 어플리케이션을 만드는 하나의 방법이라고 생각합니다. 다음에는 더욱 더 유용한 글로 찾아뵙도록 하겠습니다. 감사합니다.