2011-08-14 6 views
0

웹에서 일부 JSON 데이터를 표시하는 테이블을 설정했습니다. 서로 다른 셀에 표시된 데이터에 다른 유형의 요소가 있습니다. 기본적으로 모든 셀 유형에 대해 서브 클래스를 작성하지는 않지만 setObject/layoutSubviews/rowHeightForObject/etc 메소드에서 switch/case 문을 수행합니다. 이제 내 문제는 특정 셀에 텍스트의 크기에 따라 달라지는 UILabel이 있다는 것입니다. 이제 내가하는 일은 rowHeightForObject 메서드에서 매번 레이블을 만들어 크기를 계산하여 해당 셀의 높이를 결정하는 것입니다. 이 작업을 수행하는보다 효율적인 방법이 있습니까?(높이가 다른) 사용자 정의 셀이있는 three20 테이블 뷰

+0

UILabel을 인스턴스화하지 않고 크기를 얻는 방법은 http://stackoverflow.com/questions/446405/adjust-uilabel-height-depending-on-the-text/447065#447065를 참조하십시오. –

답변

0

TTStyledTextTableCell 셀을 사용할 수 있습니다. TTTwitter 예제 프로젝트에는 좋은 예제가 있습니다. TTStyledTextTableCell은 셀 항목을 TTStyledText으로 받아들이고 자동으로 셀 높이를 조정합니다.

맞춤 셀 클래스를 사용하는 경우 셀 클래스에 높이 함수를 추가하고 UILabel 대신 TTStyledText을 사용해야합니다.

/////////////////////////////////////////////////////////////////////////////////////////////////// 
+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object { 
    TTStyledText* text = object; 
    if (!text.font) { 
    text.font = TTSTYLEVAR(font); 
    } 
    text.width = tableView.width - [tableView tableCellMargin]*2; 
    return text.height; 
} 

함수는 테이블 데이터 소스 내의 각 셀 TTStyledText 클래스의 높이를 계산한다.

관련 문제