2009-12-07 251 views
0

我正在研究一個項目,其中有一個有3行的uitableview的1節。現在,我想要做的是能夠讓這3個細胞的高度動態化。首先,我甚至不知道這是否可能。如果是這樣,那麼我想要做到!我發現一個非常有用的教程,幫助我通過它,here。我實現了他推薦的StringHelper文件,它們對於一個單元格很好,但是當有多個單元格時,我開始遇到問題。這幅圖說明了當我保存文本時發生了什麼:alt text http://www.freeimagehosting.net/uploads/e7351da3ea.png正確調整uitableview動態調整高度的問題

而且正如你可以看到的,無論什麼原因在開始時隨機插入一個漂亮的小阿拉伯符號。

所以,這裏是我一起工作的代碼:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
NSString *label = [entree.notes/*putting entree.notes here may or may not be correct*/ length] == 0 ? kDefaultNoteLabel : aNote; 
CGFloat height = [label RAD_textHeightForSystemFontOfSize:kTextViewFontSize] + 40.0; 
return height; 
} 


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

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease]; 
cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 
aNote = entree.notes; 
NSString *label = [aNote length] == 0 ? kDefaultNoteLabel : aNote; 
switch (indexPath.row) { 
    case 0: 
cell.textLabel.text = @"Name"; 
cell.detailTextLabel.text = entree.title; 
break; 
    case 1: 
cell.textLabel.text = @"Date"; 
cell.detailTextLabel.text = [self.dateFormatter stringFromDate:entree.date]; 
break; 
    case 2: 
//aNote = entree.notes; 
if ([[cell.contentView subviews] count] > 0) { 
    id view = [[cell.contentView subviews] objectAtIndex:0]; 
    UILabel *labelToSize = view; 
    [label RAD_resizeLabel:labelToSize WithSystemFontOfSize:kTextViewFontSize]; 
} else { 
    UILabel *cellLabel; 
    cellLabel = [label RAD_newSizedCellLabelWithSystemFontOfSize:kTextViewFontSize]; 
    [cell.contentView addSubview:cellLabel]; 
    [cellLabel release]; 
} 

    cell.textLabel.text = @"Notes"; 
    cell.detailTextLabel.text = entree.notes;// description]; 
    break; 
} 
    return cell; 
} 

如果主菜是我NSManaged對象的名稱和標題,日期,筆記屬性。我所需要的只是能夠將單元格3或notes屬性設置爲動態高度,以便在輸入大量文本時,該單元格以及該單元格移動,並且其他所有內容都保持不變。正如你所看到的,我一直在嘗試一些東西,如果它變得雜亂,我很抱歉,但是這個當前的代碼設置產生了上面的圖像,這些圖像很接近,但不是那樣。這可能只是一個快速解決方案,所以如果有人能幫助我,那麼大大的讚賞!在此先感謝

回答

2

我寫了一篇博客文章,以及爲多個單元格提供代碼。你可以在Cocoa Is My Girlfriend上閱讀。

您的答案中的代碼不可讀,因爲您沒有正確格式化它。如果你解決了這個問題,你可能會得到更多/更好的反饋。

最好的問候。

+0

這個問題更加有趣,因爲有一個記錄的限制細胞的高度可能。請參閱UITableViewDelegate文檔。 – 2011-02-03 22:54:44