我有点奇怪的情况,我有一个UITableViewCell
,其标签可以有不同数量的文本。我在这里看了几个答案来解决这个问题(设置正确的单元格高度),其中很多都是这样解决的:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [indexPath row] * //some logic that looks at the text amount and adjusts accordingly;
}
我遇到的问题是,我继承的代码库有一个高度耦合过程,其中标签的文本在cellForRowAtIndexPath
中被检索,所以当heightForRowAtIndexPath
是称为检索文本的对象是nil
。
我尝试将对象设为ivar,但是,它依赖于另一个在cellForRowAtIndexPath
中实例化的数据源。
因此,假设heightForRowAtIndexPath
中的UILabel文本不,是否有一种解决此问题的好方法?
由于
答案 0 :(得分:0)
创建一个存储每个高度的数组。最初使用一些常量值填充整个数组
当调用cellForRow并获取文本时,计算新的高度并将其存储在高度数组中。现在调用reloadData of tableView
。
你甚至可以在增加身高的同时使用动画。
您甚至可以使用– reloadRowsAtIndexPaths:withRowAnimation:
答案 1 :(得分:0)
当我有可变大小的单元格时,我通常发现单独实现确定大小是太痛苦了。所以我做的是在heightForRowAtIndexPath
我只是调用cellForRowAtIndexPath
来获取单元格,并且在那里完成配置内部元素大小的工作。
当然,这意味着我将细胞构建两次。到目前为止,当我完成它时,低效率并不是一个性能问题 - 一些可见的单元和人机交互速度。据推测,如果这是性能问题,我可以构建自己的配置单元格的小缓存。
也许这种技术对你有用。