셀 스타일이 UITableViewCellStyleValue1
인 UITableView
을 사용하고 있습니다.UITableViewCell의 detailTextLabel에 여러 줄 추가
detailTextLabel
에 여러 줄을 쓰고 싶습니다. 가능합니까? 아니면 사용자 지정 셀을 만들어야합니까?
셀 스타일이 UITableViewCellStyleValue1
인 UITableView
을 사용하고 있습니다.UITableViewCell의 detailTextLabel에 여러 줄 추가
detailTextLabel
에 여러 줄을 쓰고 싶습니다. 가능합니까? 아니면 사용자 지정 셀을 만들어야합니까?
cell.detailTextLabel.numberOfLines = 2
을 입력하면 2 줄을 얻을 수 있습니다. 그러나, 나는 UITableViewCell 당신이 그 경우에 예상대로 레이블을 배치합니다 의심. UITableViewCell의 하위 클래스를 만들고 -layoutSubviews
을 재정 의하여 원하는대로 레이블을 배치 할 수 있습니다. [super layoutSubviews]
으로 전화 한 다음 라벨의 위치를 조정할 수 있습니다. 세부 텍스트 레이블의 정확한 크기를 계산하려면 -[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
을 사용하는 것이 좋습니다.
또는 UITableViewCell을 서브 클래 싱하는 대신 -tableView:willDisplayCell:forRowAtIndexPath:
에서 조정할 수 있습니다. 셀이 다시 레이아웃해야한다고 결정하면 조정할 때 지워집니다. 하위 클래 싱 방식을 사용하는 것이 좋습니다.
편집 : : BTW는 하위 클래스 방식을 사용하므로 [UITableViewCell alloc]
을 [MyTableViewCellSubclass alloc]
으로 변경하면됩니다. 새 메서드 나 속성을 도입하지 않으므로 변수는 여전히 UITableViewCell로 입력 된 상태로 유지 될 수 있으므로 다른 코드를 변경할 필요가 없습니다.
detailTextLabel은 UILabel이므로 단어 래핑 규칙은 작성한 레이블과 동일하게 적용됩니다.
편집 : 그냥 당신은 또한 텍스트 라인의 일부 임계 값을 초과 얻는 경우에 셀의 높이를 변경해야합니다, 생각했다. 아마도 2 또는 3은 괜찮습니다.
답장을 보내 주셔서 감사합니다. UITableViewCell 서브 클래 싱을하지만 프로그래밍 방식으로 레이블을 레이아웃하는 대신 펜촉을 만들었습니다. 그것이 당신이 나에게 제안하고있는 것과는 다른 것이겠습니까. 어쨌든 고마워. – mshaaban
펜촉을 만드는 것은 완벽합니다 (단, iOS 4.0을 사용하는 경우에는 'UINib'를 사용하여 펜촉을 최적화하는 것이 좋습니다). '-layoutSubviews'를 사용하여 레이블을 조정할 때의 이점은 기존의'textLabel'과'detailTextLabel' 속성을 재사용 할 수 있다는 것입니다. 그러나 그것들을 사용할 필요는 없습니다. –
최근의 신속한 버전의'cell.detailTextLabel'은 이제 선택 사항이므로'cell.detailTextLabel.numberOfLines = 2'는'cell.detailTextLabel! .numberOfLines = 2'이어야합니다. –