테이블뷰를 사용할 때 cell이 재사용되면서 속성이 임의로 변경되는 오류가 있습니다.
이번 글에선 테이블뷰에서 UISwitch의 isOn 속성이 임의로 변경되는 버그 해결하는 방법에 대해서 알려드리겠습니다.
문제 상황
우선 문제되는 상황부터 보시죠.
문제 원인
원인 : 그냥 셀을 사용하지 않고 재활용 셀(dequeueReusableCell)을 사용하기 때문.
→ 재활용 셀을 사용하면 메모리에는 화면에 보이는 10~20개의 셀만 갖고 있게 된다.
→ 셀의 UI(이미지, 레이블 등..)나 attribute(속성)들이 중첩되거나 반복되는 경우가 생긴다.
문제 해결 방법
→ prepareForReuse()를 사용하면 됩니다.
: 재사용 가능한 셀을 준비하는 메서드.
문제 해결 방법을 찾아보면서 이해에 큰 도움이 되는 링크들은 아래에서 확인하실 수 있습니다.
https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse
https://sihyungyou.github.io/iOS-dequeueReusableCell/
https://stackoverflow.com/questions/47879090/uiswitch-in-custom-uitableviewcell-reuse-issue
반응형
최근댓글