中的cellForRowAtIndexPath

问题描述:

变化的UITableViewCell高度我有一个UITableViewCellsUITableView填充在cellForRowAtIndexPathUILabels等 我想改变的UITableViewCell的高度,之后我加入了UILabels到细胞。 我该怎么做? 我读了很多关于在heightForRowAtIndexPath方法中使用它的方法,但是这个方法在cellForRowAtIndexPath之前调用,所以调用heightForRowAtIndexPath时新的自定义高度是未知的。中的cellForRowAtIndexPath

那么如何在cellForRowAtIndexPath方法中设置我的UITableViewCell的高度?

在此先感谢,浪费了很多时间在这一个。

+0

你是如何给你的标签框架? – 2012-02-10 11:06:20

+0

只需重新载入表格数据 – 2012-02-10 11:09:08

+0

耶在创建之前,行的高度必须已知。一种方法是在计算有多少标签将在特定行中,然后加载表格视图 – 2012-02-10 11:09:34

我可以更改UITableViewCell的contentView,这工作正常:)如果我改变我的cellForRowAtIndexPath函数中的高度,并立即调用[tableView beginUpdates],它会改变。

+0

您能解释更多关于如何解决问题的方法吗?我遇到同样的问题 – 2014-05-30 23:47:18

+0

对我不起作用 – 2014-09-11 09:47:57

+0

更改contentview的高度调用heightForCell再次返回单元格高度的存储值(所以是的,它可以工作,并且它已经停止代码重复的疯狂应用程序)谢谢 – 2015-03-28 07:33:57

如何在cellForRowAtIndexPath中强制额外调用heightForRowAtIndexPath如果单元格的高度不是您想要的高度?

你只需要避免无限循环:)

+3

这不起作用:'tableView:heightForRowAtIndexPath:'由'cellForRowAtIndexPath:'之前的UITableView调用来设置行高。调用'tableView:heightForRowAtIndexPath:'只是计算单元格高度并返回它 - 它对已经设置的tableView单元格没有任何影响。 – yuji 2012-02-10 11:11:06

+0

那么......如果你将某一行的高度设置为其他行的高度,那么将在单元稍后检索到单元时的高度... 所以...如果将某个行的高度改变为cellForRowAtIndexPath中的某一行,然后,下一次调用heightForRowAtIndexPath时,它将被更改... – 2012-02-10 15:34:20

你不能改变高度的cellForRowAtIndexPath。在显示整个tableView之前,tableView必须知道高度。这就是为什么tableView:heightForRowAtIndexPath:为你的tableView中的每个单元格调用。
例如,需要计算容纳单元格的scrollView的大小。

但是由于单元格的创建遵循由您创建的特定算法,所以在调用tableView:cellForRowAtIndexPath:之前,您应该能够计算出每个单元格的高度。

使用的是确定的cellForRowAtIndexPath细胞的高度的代码相同的部分:并付诸heightForRowAtIndexPath:
优化是heightForRowAtIndexPath重要的,因为它要求每一个细胞。所以确保你只做最小的工作量来计算高度。