2012-07-28 4 views
1

아주 간단한 문제입니다. cellForRowAtIndexPath에서 사용자 정의 UILabel을 추가해야합니다. 그래서 주어진 방법으로 이것을 시도해 보겠습니다 :UITableViewCell addSubview 반복 객체

UILabel *titleLbl = [[UILabel alloc] init]; 
//Other properties etc 

if (indexPath.row == 0) titleLbl.text = @"1"; 
else if (indexPath.row == 1) titleLbl.text = @"2"; 

[cell addSubview:titleLbl]; 

문제점 : 테이블을 아래로 내리면 라벨이 반복되고 복제되기 시작합니다.

어떻게이 문제를 해결할 수 있습니까?

감사합니다.

답변

3

에 레이블의 텍스트를 설정 것 prepareForReuse 메소드를 오버라이드 (override)하는 것을 잊지 마세요 할당 된. 해당 레이블을 검색하려면 태그를 사용하고 셀의 viewWithTag 메서드를 사용하십시오.

+0

마법처럼 작동하고 UITableViewCell의 하위 클래스를 사용하지 않고 하위 뷰를 추가 할 수있게합니다. –

0

이것은 셀을 다시 사용하고 레이블을 추가 할 때마다 발생하기 때문입니다.

UILabel을 추가하는 UITableViewCell을 하위 클래스로 만드는 것이 더 좋습니다. 셀이되는 때

if (!cell) { 
    cell =...; 
    UILabel *label; 
    label.tag = 1; 
    [cell addSubview:label]; 
} 

UILabel *label = (UILabel*)[cell viewWithTag:1]; 
if (indexPath.row == 0) label.text = @"1"; 

에 하위 뷰로서 만 추가됩니다이 방법을 해당 레이블을 추가 전무