- This topic has 2개 답변, 3명 참여, and was last updated 4 years, 6 months 전에 by 멍단비.
-
글쓴이글
-
-
종호참가자
- 글작성 : 9
- 답글작성 : 2
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: MyCustomCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MyCustomCell
…
if IndexPath.row == 0 {
cell.myView.isHidden = true
}
위와 같은 예시 코드로 table view의 특정 row의 cell에 속해있는 UIView를 hidden처리를 하려고 했습니다.
그런데 table view가 길어져 scroll이 될때 scroll하여 새로 보이게 되는 cell들의 hidden처리가 이상하게 되는것을 발견했습니다.
디버깅을 해보니 scroll이 될때 IndexPath.row가 다시 0으로 초기화 되어서 그런것 같은데
이런 경우는 어떻게 해결을 해야 할까요???
2020-05-06 오후 8:30 #7580 -
멍단비참가자
- 글작성 : 10
- 답글작성 : 98
데이터가 수천개가있다고 셀을 수천개를 만들 수가 없으니까 셀을 재사용해요.
실제로 cellForRowAt 메소드에 print를 찍어보시면 스크롤하실떄마다 해당 메소드가 불려지는걸 아실 수 있을거에요.그리고 지정해놓으신대로 0번째 셀에 cell.myView.isHidden = true 처리가 되어있는데,
스크롤을 하면서 isHidden된 셀이 ‘재사용’되어서 isHidden 처리 된 상태로 불려져서 해당 이슈가 생기는 거에요.‘재사용’은 정말 중요한 부분이니까 공부해보시구, 가장 간단한 해결방법은 셀이 생성될때 초기화 메소드에
cell.myView.isHidden = false 처리를 해주시면 해결은 되실거에요~2020-05-07 오전 9:58 #7588
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.