动态自定义单元格中的动态textview

时间:2011-06-15 11:41:19

标签: iphone objective-c ios

我在这里遇到了一些麻烦。

我有一个tableview,有7个单元格,所有这些都是使用.xib文件制作的。其中一些包含标签,两个包含文本视图。

目前的情况是所有标签都正确显示。单元格的高度与.xib文件状态相同。

问题是,文本视图表现得很奇怪。它可能需要做一些我希望它们是动态的事实。有时,它在textview中给出了很长的故事。有时,只有一个字。因此,textview应该是动态的,单元格的高度也应该是动态的。

代码如下所示:

DetLocDescrCell *locDCel = (DetLocDescrCell *)[tabelView dequeueReusableCellWithIdentifier:nil];
if (locDCel == nil) {
    [[NSBundle mainBundle] loadNibNamed:@"DetLocDescrCell" owner:self options:nil];
    locDCel = detLocDescrCell;
}
[locDCel.locDescrLabel setText:[geselecteerdItem objectForKey:@"LocationDescription"]];
CGRect descrFrame;
descrFrame = locDCel.locDescrLabel.frame;
descrFrame.size.height = [locDCel.locDescrLabel contentSize].height;
locDCel.locDescrLabel.frame = descrFrame;
descrFrame.size.height = descrFrame.size.height + 10;
locDCel.frame = descrFrame;
[listCells addObject:locDCel];

此代码从类DetLocDescrCell创建自定义单元格,加载数据,检查何时应调整高度,调整高度,然后将单元格添加到单元格列表中。在cellForRowAtIndexPathheightForRowAtIndexPath中再次使用单元格列表。但是,高度不适应,文本视图没有得到正确的文本。有没有人有任何想法?

4 个答案:

答案 0 :(得分:2)

我不确定这是否正确,但我是这样做的,

情况是自定义单元高度& heightforrowatindex单元格的高度应该相同,所以我试过

计算heightforrowatindexpath

中textview内容的高度
if(indexpath.row == 3) // containing textview 
{
   CGSize textSize = [txtviewstring sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(190, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap]; 
}

然后在你的cellforrowatindexpath中 - 计算相同的高度&将高度初始化为自定义单元格textview的高度cell.txtView.frame = CGRectMake (10,10,190,txtsize.height)

然后是你的高度和高度细胞高度相等

希望这个想法有所帮助!

答案 1 :(得分:0)

您可以使用委托方法:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

在屏幕上绘制单元格之前设置高度。

答案 2 :(得分:0)

我不确定你的问题。如果要增加单元格上textview的大小,则不可能,因为tableview的单元格已经创建并加载。它不会返回委托方法tableview:heightForRowAtIndexPath:indexPath,因为当tableview加载时indexpath.row会增加

Check the tableview delegate reference

答案 3 :(得分:0)