2014-02-22 2 views
0

UILabel을 내 tableview의 컨텐츠보기로 추가했습니다. 스크롤시 UILabel의 텍스트가 겹칩니다. 아래는 코드입니다.UITableViewCell - 스크롤 할 때 ContentView가 겹치다

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.chatTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Group"]; 
    static NSString *CellIdentifier = @"Group"; 

    UITableViewCell *cell = [self.chatTableView dequeueReusableCellWithIdentifier:CellIdentifier 
                    forIndexPath:indexPath]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
             reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = self.latestTrimText; 

    UILabel *cellLabel = [[UILabel alloc]init]; 
    cellLabel.text = self.dateOfLatestTrim; 
    cellLabel.frame = CGRectMake(15, 0, 150, 30); 
    [cell.contentView addSubview:cellLabel]; 

    return cell; 
} 

그때 UITableViewCell *cell = [self.chatTableView dequeueReusableCellWithIdentifier:nil];

그러나 변경하여이 문제를 해결할 수는있는 tableview의 스크롤이 부드럽게되지 않습니다. 문제를 해결할 다른 방법이 있습니까?

답변

0

테이블 뷰 셀은 잠재적으로 무한정 재생되고 재사용 될 수 있습니다. 이것은 재사용 식별자가 의미하는 것입니다.

if (cell == nil) 블록 외부에 하위 뷰를 추가하지 않도록주의하십시오. 이제 동일한 셀 인스턴스에 새 레이블을 반복해서 추가하는 것입니다. 이것이 당신의 텍스트가 서로 겹치는 이유입니다.

셀을 재활용하고 재사용하는 방법에 대한 설명서를 읽으시기 바랍니다.

nil reuse id를 전달하면 재생 프로세스가 재생되지 않으므로 수정이 올바르지 않습니다. 테이블 뷰의 각 행에 대해 새 인스턴스를 만듭니다. 이것이 성능 문제가있는 이유입니다.

관련 문제