我有一个表视图,它将计算cellForRowAtIndexPath中每个单元格的高度,而heightForRowAtIndexPath将使用该结果。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PhotoCell";
UITableViewCell *sectionHeaderView = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (sectionHeaderView == nil)
{
sectionHeaderView = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//setting up the cell
and also calculate the total height required for this cell and save to _eachcellheight
}
它是细胞的一部分。
- (void)viewWillAppear:(BOOL)animated {
CGPoint offset = tableView.contentOffset;
[tableView reloadData];
[tableView setContentOffset:offset];
}
在视图中会出现,我需要重新加载表中的数据。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return _eachcellheight; //option 1
return 200; //option 2
}
现在的问题是,如果使用选项1,开头的表格显示会很好但是在表格的reloaddata偏移后会变得很奇怪并且滚动变得很奇怪。
但是使用选项2为每个选项返回200.f,reloaddata工作正常,它可以保持与以前相同的位置。 但是桌子必须有不同的牢房高度。
我该如何解决? 我已经解决了这个问题三天了。
答案 0 :(得分:0)
因为在heightForRowAtIndexPath
之前调用了cellForRowAtIndexPath
。将您的身高计算逻辑移到heightForRowAtIndexPath
而不是cellForRowAtIndexPath
,它会正常工作。表视图在实际创建单元格之前需要知道每个单元格的高度。