2011-04-23 88 views
2

我在cellForRowAtIndex函数中创建自定义单元格,并使用我的动态文本填充它。单元格的高度根据这个文本是可变的,所以我需要使用heightForRowAt函数,但是在那个函数中我没有这个单元格。我可以创建一个新的文本,然后用文本填充它,然后调用我的calculateHeight函数,但是然后为每行创建2个单元格。iPhone - 自定义TableViewCell高度计算单元格文本

任何人都有更好的方法?按行索引自行缓存单元格中的cellForRow函数并使用它?在formatForRow之前调用cellForRow?

到目前为止,我已经设法让Xcode4崩溃了两次,所以我希望有人已经这样做了。

回答

1
tableView:heightForRowAtIndexPath: 

调用之前

tableView:cellForRowAtIndexPath: 

创建两个单元是一个可能的解决方案,但创建两个小区是不是一个非常有效的方法。但是,您不需要单元格来计算高度;所有你需要的是字符串。

您可能需要使用

sizeWithFont:constrainedToSize: 

在您的字符串来计算高度。

我可以提供有关如何做到这一点的详细信息,但您应该能够通过阅读文档来弄清楚。

+0

这就是我所做的,但然后细胞高度计算功能在我的视图控制器。不是一个大问题,但现在我必须粘贴更多的代码才能包含我的自定义单元格 – Mark 2011-04-23 18:48:20

+0

@Mark然后你在错误的地方做正确的事情。它应该是自定义单元的类方法,而不是控制器的实例方法。 – 2011-04-24 11:24:54

+0

因为我不能在当前由于崩溃错误而在heightForRowAt ..函数中调用cellForRowAt ..我重复在高度函数中创建单元格,而不是调用cell.calculateHeight,该函数根据字符串计算其自身高度以及它们的布局方式。 – Mark 2011-05-14 20:24:57

1

你所做的是你在你的自定义单元格上做出一个类方法(例如),它知道如何设置事物(静态大小的东西)的值,并做一些数学运算来确定文本的偏移量例如,它可以告诉你在计算字符串有多高时,单元格需要多大。

相关问题