uitableview动态高度调整正确的问题

时间:2009-12-07 18:02:32

标签: iphone uitableview

我正在开发一个具有uitableview的项目,其中1行包含3行。现在,我想要做的是能够使这3个单元格的 1 在高度上是动态的。首先,我甚至不知道那是否可能。如果是,那我就想做!我发现了一个非常有用的教程,帮助我完成它,here。我实现了他推荐的StringHelper文件,它们适用于一个单元格,但是当有多个单元格时,我开始遇到问题。这张图片说明了保存文字时会发生什么:alt text http://www.freeimagehosting.net/uploads/e7351da3ea.png

正如你可以看到的那样,无论出于何种原因随机插入一个漂亮的小阿拉伯看符号。

所以,这是我正在使用的代码:

- (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;
}

其中entree是我的NSManaged对象的名称,标题,日期,注释是属性。我需要的是能够将单元格3或者notes属性设置为动态高度,这样当它们输入大量文本时,该单元格和仅该单元格会移动,而其他所有内容都保持不变。正如你所看到的,我一直在尝试一些事情,如果它有点混乱我道歉,但是这个当前的代码设置会产生上面的图像,这些图像很接近,但并不完全存在。它可能只是一个快速修复,所以如果那里的任何人可以帮助我,它将非常赞赏!提前致谢

1 个答案:

答案 0 :(得分:2)

我写了一篇关于此的博客文章,为多个单元格提供代码。您可以在Cocoa Is My Girlfriend上阅读。

您的答案中的代码无法读取,因为您没有正确格式化。如果你解决了这个问题,你可能会得到更多/更好的反馈。

最诚挚的问候。