[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;
}
Remove if (self.taskList.count > indexPath.row)
셀 일반 할당
셀이 늘어나면 테이블 새로고침 또는 새 행 새로고침
먼저 가지고 있는 셀 수를 살펴봐야 합니다. 둘째, 셀의 개념은 컨테이너입니다. 의사결정 권한은 데이터 소스에 있습니다.
이미 RegisterNib 메소드를 사용하여 등록했습니다. 프록시 메소드에서는 셀이 비어 있는지 확인할 필요가 없습니다
(UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 프록시 메소드에 다음을 작성하세요.
으아악셀 재사용, 재사용은 셀의
UIButton
및UILabel
과 같은 이전 상태입니다. 재사용 전UIButton
에서UILabel
이 강조 표시된 상태인 경우 재사용 후는text=@"label"
입니다. 여전히 강조표시되어 있으면UIButton
의UILabel
은 여전히 text
이고,label
이 재사용되면cell
메서드가 호출됩니다. 따라서cellForRow
에서는 일반적으로 값과 상태를 재할당하고 변경합니다. 따라서 셀에는cellForRow
라는 기본 규칙이 있습니다. 그렇지 않으면 셀이 혼란스러워질 것입니다.如果有if 那一定要有else
등록 후 셀이 비어 있는지 판단할 필요는 없지만, 왜 카운트를 판단해야 하는지 이해가 되지 않습니다. 그러나 그것은 아마도 당신의 문제가 아닐 것입니다. "내용의 중복"이 셀의 컨트롤이 반복적으로 추가된다는 것을 의미한다면 이는 [cell setCellContentWith:entity]이어야 합니다. 여기에서 컨트롤을 생성하고 추가하면 데이터만 새로 고칠 수 있습니다. 즉, 할당 프로세스만 컨트롤을 생성하지 않습니다.
테이블뷰는 많이 표시되지 않습니다. 재사용하지 않으면 반복되지 않습니다. 또한, RegisterNib 메소드를 호출한 후에는 메모리가 항상 순수 CELL입니다.