2009-08-05 2 views
9

실제로 여러 줄에 걸쳐 텍스트를 가져올 수 없습니다. 높이가 올바르게 보입니다. 내가 뭘 놓치고 있니?가변 크기의 UITableViewCell을 만들려면 어떻게해야합니까?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"StatusCell"] autorelease]; 

    CGRect frame = cell.contentView.bounds; 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame]; 
    myLabel.text = [[person.updates objectAtIndex:indexPath.row] valueForKey:@"text"]; 
    [cell.contentView addSubview:myLabel]; 

    [myLabel release]; 

    return cell; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *text = [[person.updates objectAtIndex:indexPath.row] valueForKey:@"text"]; 
    UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]]; 
    CGSize withinSize = CGSizeMake(tableView.frame.size.width, 1000); 
    CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeWordWrap]; 

    return size.height + 20;  
} 

또한 무엇을 놓치면 레이블이 표 셀보다 오래 나타 납니까? alt text http://i31.tinypic.com/15chnjd.gif

답변

15

TweeteroMessageListController.m에 예를 제공합니다.

http://ec.mashable.com/wp-content/uploads/2009/04/imageshackscreen.jpg

는 (그림이 Mashable에서 가져온 것입니다) : 코드가 다음과 같은 화면을 렌더링합니다.

기본적인 구현 개요하십시오 UITableViewCell 작성시

  1. 만들고 tableviewCellWithReuseIdentifier:에 도시 된 방식으로 하위 뷰로서 UILabel 추가. TEXT_TAG 라벨을 찾습니다.

  2. UITableViewCell보기가 풍부한 경우 과 마찬가지로 configureCell:forIndexPath 에서처럼 레이블을 올바르게 포맷해야합니다.

  3. tableView:heightForRowAtIndexPath에서와 같이 각 셀의 적절한 높이를 반환합니다.

+0

이것은 아주 좋습니다. 감사. –

2
myLabel.numberOfLines = 2; 

확인이 속성을 사용하는 방법에 대한 정보에 대한 docs.

+0

문제가 항상 특정 번호를하지 않을 것입니다, 그것은 numberOfLines 속성은 설정 각 행 – Jason

+0

에 대한 변경됩니다 ** 최대 ** 라인의 수. 그것을 높은 값으로 설정하십시오. Rob이 말한대로 문서를 확인하십시오. –

+2

또한 myLabel.lineBrakeMode를 UILineBreakModeWordWrap로 설정해야합니다. –

0
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return theSizeYouWantYourCellToBe; 
}