테이블뷰를 사용할 때 cell이 재사용되면서 속성이 임의로 변경되는 오류가 있습니다.

 

이번 글에선 테이블뷰에서 UISwitchisOn 속성임의로 변경되는 버그 해결하는 방법에 대해서 알려드리겠습니다.

 

문제 상황

우선 문제되는 상황부터 보시죠.

 

https://vimeo.com/247906440

UISwitch 의  isOn 속성 이 임의로 변경

 


 

문제 원인

원인 : 그냥 셀을 사용하지 않고 재활용 셀(dequeueReusableCell)을 사용하기 때문.

재활용 셀을 사용하면 메모리에는 화면에 보이는 10~20개의 셀만 갖고 있게 된다.

→ 셀의 UI(이미지, 레이블 등..)나 attribute(속성)들이 중첩되거나 반복되는 경우가 생긴다.

 


 

문제 해결 방법

→  prepareForReuse()를 사용하면 됩니다.

 

: 재사용 가능한 셀을 준비하는 메서드.

 

prepareForReuse() 사용.

 

애플 공식문서.

 


 

문제 해결 방법을 찾아보면서 이해에 큰 도움이 되는 링크들은 아래에서 확인하실 수 있습니다.

 

https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse

 

Apple Developer Documentation

 

developer.apple.com

 

https://sihyungyou.github.io/iOS-dequeueReusableCell/

 

iOS) dequeueReusableCellWithIdentifier 과정과 사용이유

테이블뷰, 컬렉션뷰의 셀 재사용에 대해 생각해보자

sihyungyou.github.io

 

https://stackoverflow.com/questions/47879090/uiswitch-in-custom-uitableviewcell-reuse-issue

 

UISwitch in custom UITableViewCell Reuse Issue

The issue is as follows: I have a tableview with a custom cell. That cell contains a label and a UISwitch. I have set the label.text value to an array, but the UISwitch is getting reused. Example...

stackoverflow.com

 

 

반응형