2014-06-10 2 views
0

내 셀은 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

코드는 괜찮습니다. 배열 (_tasks)을 참조하는 것은 조금 이상합니다. 그게 재산인가요? self.tasks는 어떻습니까? 또한 작업 배열의 요소를 "플레이어"라고 부르는 이유는 무엇입니까? 그러나 그것의 아무도는 문제를 설명하지 않는다. – danh

+0

당신의 문제는'player [@ "complete"]'속성을 어떻게 설정하는지에 달려 있습니다. 설정 방법에 대한 코드를 제공하십시오. – jakenberg

답변

1

셀을 다시 사용한다고 가정하면 재사용되는 빨간색 색상의 셀 인스턴스를 사용할 때 빨간색이됩니다. PrepForReuse 메서드를 재정 의하여 색상을 재설정합니다. 또는 셀을 아래와 같이 구성 할 때마다 색상을 재설정하십시오.

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]; 
} 
관련 문제