2009-12-07 207 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