我想根据该行中的单元格调整UITableView的行高.
最初,我试图使用
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
但问题是,当表加载时,调用流似乎是:
第一个电话:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
然后打电话:
(UIViewTableCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这意味着,在生成单元格之前,我必须告诉表格行的高度.
但是,我想要的恰恰相反,即在我的单元格生成之后,我告诉表格这行的高度.
有没有办法实现这个目标?
解决方法
根据tableView:cellForRowAtIndexPath:和tableView heightForRowAtIndexPath中的数据为每一行创建一个高度数组:只需从该数组中获取高度值.
在您的实现文件中声明:
NSMutableArray *heights;
在viewDidLoad中:初始化它:
heights = [NSMutableArray array];
在tableView:cellForRowAtIndexPath中:设置每行的高度:
[heights addObject:[NSNumber numberWithFloat:HEIGHT]];
并在tableView中的heightForRowAtIndexPath:返回所需的高度:
return [heights objectAtIndex:indexPath.row];
这应该工作,因为tableView:cellForRowAtIndexPath:为每个单元格调用,然后为每个单元格调用tableView heightForRowAtIndexPath :.