2017-03-01 6 views
0

tableview에 문제가 있습니다.잘못된 indexpath에있는 tableview 업데이트 셀

나는 오디오 트랙 목록을 가지고 있으며,이 트랙이 실제로 존재하는지 모든 트랙을 확인합니다. 그렇지 않다면 셀 이미지보기에서 아트웍 위에 삭제 된 이미지를 설정합니다.

//SET DELETED IMAGE IF TRACK NOT EXISTS 
    if (!trackExists && cell.trackImageView.subviews.count < 1) { 

     UIImageView *deletedImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 60, 60)]; 
     deletedImageView.image = [self resizeImageWithImage:[UIImage imageNamed:@"cellDeletedImage"] scaledToSize:CGSizeMake(60, 60)]; 
     [cell.trackImageView addSubview:deletedImageView]; 

    } 

가끔 테이블 뷰를 다시로드 할 때 삭제 된 이미지는 기존 트랙에 있습니다. 나는 이것을하기위한보다 효율적인 방법이 있다는 것을 알고 있지만, 나는 시도하고 시험해 보았고 여기서 끝냈다.

또한이 방법을 기록했으며 로그가없는 경우에도 삭제 된 이미지를 저장합니다.

답변

0

테이블 뷰를 디자인 할 때 사용하는 경우 셀 재사용 가능성이 있습니다. 테이블을 몇 번 위아래로 스크롤 할 때 이런 일이 발생합니까? 다시 스크롤하면 삭제 된 이미지가있는 셀에 갑자기 나타나지 않습니까?

재사용 된 셀에 여전히 삭제 된 이미지에 대한 참조가있는 것처럼 들립니다.

그 이미지보기를 추가하는 것이 명확하지 않지만 테이블 뷰 셀의 사용자 정의 클래스로 해당 코드를 이동하거나 존재하지 않는 경우 해당 코드를 이동하는 것이 좋습니다. 이어서 prepareForReuse에서 이미지보기가 제거되었거나 숨겨져 있는지 확인하십시오.

@class TrackTableViewCell : UITableViewCell 
{ 
    - (void) prepareForReuse 
    { 
     //Remove/hide image view 
    } 

    - (void) setAsDeleted 
    { 
     //Add/show image view 
    } 
} 

은 (목표 - C 구문 오류를 용서! 지금 잠시 동안 스위프트를 사용했습니다.)