2009-08-05 58 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

(PIC從Mashable截取)。

基本實施綱要:

  1. 當構造一個UITableViewCell,創建和添加UILabel如在tableviewCellWithReuseIdentifier:所示的方式的子視圖。尋找TEXT_TAG標籤的創建。

  2. ,享有豐富的UITableViewCell時,請確保您的格式正確的標籤,如在configureCell:forIndexPath做,同樣認準標籤標記TEXT_TAG

  3. 返回每個單元格的適當高度,如tableView:heightForRowAtIndexPath中所做的那樣。

+0

這太好了。謝謝。 – 2010-08-15 10:29:35

2
myLabel.numberOfLines = 2; 

檢查docs關於如何使用這個屬性全信息。

+0

的問題是,它不會永遠是一個具體的數字,它會爲每一行 – Jason 2009-08-05 14:36:21

+0

改變numberOfLines屬性設置** **最大行數。將其設置爲較高值。 (並且,正如Rob所說,請檢查文檔。) – 2009-08-05 14:37:50

+2

您還必須將myLabel.lineBrakeMode設置爲UILineBreakModeWordWrap。 – 2009-08-05 14:39:03

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