찾다

 >  Q&A  >  본문

objective-c - iOS 自定义tableView cell重用导致内容重复 问题 如何有效解决?急急急!!


 [self.tableView registerNib:[UINib nibWithNibName:@"NewTaskCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:NewTaskCellId];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NewTaskCell *cell = [self.tableView dequeueReusableCellWithIdentifier:NewTaskCellId forIndexPath:indexPath];
    if (!cell) {
        cell = [[NewTaskCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NewTaskCellId];
    }
    if (self.taskList.count > indexPath.row) {
        FindDisOrderInfoEntity *entity = [self.taskList objectAtIndex:indexPath.row];
        [cell setCellContentWith:entity];
    }
    return cell;
}
大家讲道理大家讲道理2772일 전499

모든 응답(7)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-18 09:59:24

    Remove if (self.taskList.count > indexPath.row)
    셀 일반 할당
    셀이 늘어나면 테이블 새로고침 또는 새 행 새로고침

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:59:24

    먼저 가지고 있는 셀 수를 살펴봐야 합니다. 둘째, 셀의 개념은 컨테이너입니다. 의사결정 권한은 데이터 소스에 있습니다.

    회신하다
    0
  • 阿神

    阿神2017-04-18 09:59:24

    이미 RegisterNib 메소드를 사용하여 등록했습니다. 프록시 메소드에서는 셀이 비어 있는지 확인할 필요가 없습니다

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 09:59:24

    (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 프록시 메소드에 다음을 작성하세요.

    으아악

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:59:24

    셀 재사용, 재사용은 셀의 UIButtonUILabel과 같은 이전 상태입니다. 재사용 전 UIButton에서 UILabel이 강조 표시된 상태인 경우 재사용 후는 text=@"label"입니다. 여전히 강조표시되어 있으면 UIButtonUILabel은 여전히 ​​text이고, label이 재사용되면 cell 메서드가 호출됩니다. 따라서 cellForRow에서는 일반적으로 값과 상태를 재할당하고 변경합니다. 따라서 셀에는 cellForRow라는 기본 규칙이 있습니다. 그렇지 않으면 셀이 혼란스러워질 것입니다. 如果有if 那一定要有else

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:59:24

    등록 후 셀이 비어 있는지 판단할 필요는 없지만, 왜 카운트를 판단해야 하는지 이해가 되지 않습니다. 그러나 그것은 아마도 당신의 문제가 아닐 것입니다. "내용의 중복"이 셀의 컨트롤이 반복적으로 추가된다는 것을 의미한다면 이는 [cell setCellContentWith:entity]이어야 합니다. 여기에서 컨트롤을 생성하고 추가하면 데이터만 새로 고칠 수 있습니다. 즉, 할당 프로세스만 컨트롤을 생성하지 않습니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 09:59:24

    테이블뷰는 많이 표시되지 않습니다. 재사용하지 않으면 반복되지 않습니다. 또한, RegisterNib 메소드를 호출한 후에는 메모리가 항상 순수 CELL입니다.

    회신하다
    0
  • 취소회신하다