2013-05-06 4 views
2

UITableview에 재사용 가능한 셀이 있으며 특정 셀에만 사용자 정의 이미지를 추가하고 싶습니다.UITableView의 특정 재사용 가능한 셀에 사용자 정의 하위 뷰 추가

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    BCContactCell * cell = [tableView dequeueReusableCellWithIdentifier:contactCellIdentifier]; 
    ... 
    if ([contact isFavorite]) { 
     UIImageView * fav = [[UIImageView alloc] initWithFrame:CGRectMake(280.0f, 2.0f, 32.0f, 32.0f)]; 
     [fav setImage:favoriteImg]; // already loaded 
     [cell addSubview:fav]; 
    } 
} 

그것은 작동하고, 모든 좋아하는 접촉은 셀의 사진을 가지고

여기에 예를 들어, 내 코드입니다. 아래로 스 와이프 할 때를 제외하고 다른 셀도 사진을 찍기 시작합니다. 알아낼 수 없습니다.

누구나 어떻게 할 수 있습니까?

감사합니다.

다음

답변

6

우리가 갈,

는 이미지 뷰, fav.tag = 1290에 태그 번호를 제공; 나중에 해당 번호를 사용하여 이전 uiimageview를 다시 가져 와서 셀에서 제거 할 수 있습니다.
else { [[cell viewWithTag : 1290] removeFromSuperview]; 이 UITableViewCells에 관해서 }

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    BCContactCell * cell = [tableView dequeueReusableCellWithIdentifier:contactCellIdentifier]; 
    ... 
    if ([contact isFavorite]) { 
     UIImageView * fav = [[UIImageView alloc] initWithFrame:CGRectMake(280.0f, 2.0f, 32.0f, 32.0f)]; 
     fav.tag = 1290; 
     [fav setImage:favoriteImg]; // already loaded 
     [cell addSubview:fav]; 
    }else{ 
     [[cell viewWithTag:1290] removeFromSuperview]; 
    } 
} 

, 그들은 이미 세포를 만들어 재사용. 그들이 옛날을 한 번 재사용 할 때. 셀에 추가 한 UIImageView를 제거해야합니다.

+0

내 문제가 해결되었습니다. 빠른 답변과 설명을위한 Thx. – DCMaxxx

+0

당신은 셀 재사용을 잊어 버렸습니다. 즉, [tableView dequeueReusableCellWithIdentifier : contactCellIdentifier]에 대한 호출에서 이미 사용 된 셀을 가져올 때마다 그림이 복제됩니다. 재사용 된 셀에서 그림은 이미 하위보기로 추가 될 수 있지만 어쨌든 새 그림을 추가 할 수 있습니다. 이미지 뷰가 이미 존재하는지 확인한 후 새 뷰를 생성해야합니다. 또한 이미지를 제거하는 데주의하십시오. 태그 1290이있는 이미지 뷰를 사용할 수없는 경우, viewWithTag에 대한 호출은 nil을 반환하고 removeFrom Superview를 호출 할 수 없습니다. – smat88dd

관련 문제