2010-08-20 3 views

답변

16

cell.detailTextLabel.numberOfLines = 2을 입력하면 2 줄을 얻을 수 있습니다. 그러나, 나는 UITableViewCell 당신이 그 경우에 예상대로 레이블을 배치합니다 의심. UITableViewCell의 하위 클래스를 만들고 -layoutSubviews을 재정 의하여 원하는대로 레이블을 배치 할 수 있습니다. [super layoutSubviews]으로 전화 한 다음 라벨의 위치를 ​​조정할 수 있습니다. 세부 텍스트 레이블의 정확한 크기를 계산하려면 -[NSString sizeWithFont:constrainedToSize:lineBreakMode:]을 사용하는 것이 좋습니다.

또는 UITableViewCell을 서브 클래 싱하는 대신 -tableView:willDisplayCell:forRowAtIndexPath:에서 조정할 수 있습니다. 셀이 다시 레이아웃해야한다고 결정하면 조정할 때 지워집니다. 하위 클래 싱 방식을 사용하는 것이 좋습니다.

편집 : : BTW는 하위 클래스 방식을 사용하므로 [UITableViewCell alloc][MyTableViewCellSubclass alloc]으로 변경하면됩니다. 새 메서드 나 속성을 도입하지 않으므로 변수는 여전히 UITableViewCell로 입력 된 상태로 유지 될 수 있으므로 다른 코드를 변경할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. UITableViewCell 서브 클래 싱을하지만 프로그래밍 방식으로 레이블을 레이아웃하는 대신 펜촉을 만들었습니다. 그것이 당신이 나에게 제안하고있는 것과는 다른 것이겠습니까. 어쨌든 고마워. – mshaaban

+0

펜촉을 만드는 것은 완벽합니다 (단, iOS 4.0을 사용하는 경우에는 'UINib'를 사용하여 펜촉을 최적화하는 것이 좋습니다). '-layoutSubviews'를 사용하여 레이블을 조정할 때의 이점은 기존의'textLabel'과'detailTextLabel' 속성을 재사용 할 수 있다는 것입니다. 그러나 그것들을 사용할 필요는 없습니다. –

+0

최근의 신속한 버전의'cell.detailTextLabel'은 이제 선택 사항이므로'cell.detailTextLabel.numberOfLines = 2'는'cell.detailTextLabel! .numberOfLines = 2'이어야합니다. –