我的细胞正在将细胞混合在cellforrowatindexpath中。我更改了标签的文本颜色和文本,但即使isComplete值更改,单元格颜色和文本也会随机更改。
例如,当我滚动表格视图时,完成的任务有时是红色的。奇怪的是,这只发生在我滚动的单元格中,而不是最初加载并在屏幕上可见的单元格。
以下是我的方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TaskCell *cell = [tableView
dequeueReusableCellWithIdentifier:@"TaskCell"];
PFObject *player = (_tasks)[indexPath.row];
NSString *taskType = player[@"name"];
NSNumber *completeNum = player[@"complete"];
BOOL isComplete = [completeNum boolValue];
UIImage *completeImage;
NSLog(@"task: %@ is complete %@", player[@"taskDescription"], player[@"complete"]);
if(isComplete){
completeImage = [UIImage imageNamed:@"check"];
cell.taskDescriptionLabel.text = player[@"taskDescription"];
}else{
completeImage = [UIImage imageNamed:@"x2"];
cell.taskDescriptionLabel.text = @"Incomplete";
cell.taskDescriptionLabel.textColor = [UIColor redColor];
}
cell.taskCompletedImage.image = completeImage;
cell.TaskTypeLabel.text = taskType;
return cell;
}
为什么会这样?
答案 0 :(得分:1)
假设重复使用该单元格,则在使用具有红色的单元格的重用实例时,您将获得红色。通过覆盖prepareForReuse方法重置颜色。或者每次配置单元格时重置颜色。
if(isComplete){
completeImage = [UIImage imageNamed:@"check"];
cell.taskDescriptionLabel.text = player[@"taskDescription"];
cell.taskDescriptionLabel.textColor = [UIColor blackColor];
}else{
completeImage = [UIImage imageNamed:@"x2"];
cell.taskDescriptionLabel.text = @"Incomplete";
cell.taskDescriptionLabel.textColor = [UIColor redColor];
}