cellforrowatindexpath混合细胞中的数据

时间:2014-06-10 22:47:29

标签: ios cocoa-touch uitableview

我的细胞正在将细胞混合在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;
}

为什么会这样?

1 个答案:

答案 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];
}