0

我有一个带有自定义标题部分和单元格的表格视图。我已经创建了我的模型,现在模型保留了对剖面视图标题的引用,这是“糟糕”的设计,但我实际上只是遵循了苹果的示例代码。好吧,我的单元格有一个标签,可以保存多行数据,因此应该调整它的大小,以便每一行都可见。我想这将是控制器的工作,heightForRowAtIndexPath 对吗?事实上,从那里检索单元格并从那里获取它的高度并不难。但是,这是不可能的,因为尚未创建单元格。(如果我错了请纠正我)

我能想到的唯一方法是在我的模型中引用单元格,是的,我知道,坏公民。但是这样我可以很容易地得到我需要的高度。

另一种方法是创建一个使用 sizeWithAttributes: 计算高度的方法,但这似乎是一个糟糕的设计,因为我不应该知道我的视图外观。

我在这里监督一些基本的事情吗?或者它就是这样。

我没有附加任何代码,因为我不知道您想要什么,但请随时要求我插入一些内容。

4

2 回答 2

3

您无需调用 cellForRowAtIndexPath 即可获得指定的结果。我相信您正在使用数组字典数组来保存内容,

让数组为

   NSArray *arrData = [[NSArray alloc]init];

现在,在

**heightForRowAtIndexPath**
{
   if ( [[arrData objectAtIndex:indexPath.row].length] < 30 )
     return 40;  // Initial height
   else    if ( [[arrData objectAtIndex:indexPath.row].length] > 30 )
     return 60;   // Or any other value as per your need

}

这将调整单元格的高度,具体取决于该单元格内字符串的长度。并且,在cellForRowAtIndexPath中 使用

[cell.lblText setFrame:CGRectMake(0,0,cell.frame.size.width, cell.frame.size.height)];

// 如果你想让它更动态

heightForRowAtIndex

{
 int _iCount = [[self.arrData objectAtIndex:indexPath.row].length] % 40;

if ( _iCount == 0 )
return 40;
else
 return 40*_iCount;
}

这将解决它。

于 2013-08-01T10:29:25.587 回答
0

我认为在调用 heightForRowAtIndexPath 时已经创建了单元格。因此,在该方法中,您可以获得单元格,计算标签的高度并返回 tableviewCell 的正确高度。

于 2013-08-01T09:17:54.193 回答