Iphone 通过编程滚动更正计算的表格单元格高度

Iphone 通过编程滚动更正计算的表格单元格高度,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我自己计算我的tavleview单元格的高度 当我滚动时,这很有效,但有时当表格出现时,它看起来是错误的 然后,如果我上下滚动,它看起来是正确的 因此,我需要以编程方式滚动表 现在的问题是,有时我只有3行,所以我不能以编程方式滚动-但手动可以“滚动”视图,即使没有更多的单元格。在这种情况下,我仍然需要以编程方式“滚动”视图,因为这样可以更正tablecell高度的计算 因此,此代码不起作用: NSIndexPath *indexPath = [NSIndexPath indexPathForRo

我自己计算我的tavleview单元格的高度

当我滚动时,这很有效,但有时当表格出现时,它看起来是错误的

然后,如果我上下滚动,它看起来是正确的

因此,我需要以编程方式滚动表

现在的问题是,有时我只有3行,所以我不能以编程方式滚动-但手动可以“滚动”视图,即使没有更多的单元格。在这种情况下,我仍然需要以编程方式“滚动”视图,因为这样可以更正tablecell高度的计算

因此,此代码不起作用:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:10 inSection:0];
[self.theTable scrollToRowAtIndexPath:indexPath
                      atScrollPosition:UITableViewScrollPositionTop
                              animated:YES];
所以问题是,如何以编程方式滚动视图

*编辑* 我检查了计算出的高度,它们都是正确的——即使在滚动之后,它们的计算结果与最初显示时完全相同

因此,我给了框架一个红色背景,以查看视图出现后的显示与滚动后的显示之间的差异

事实上,ViewDidDisplay之后的所有帧都具有相同(错误)的高度,而不是像这样设置它们的高度:

-(void) layoutSubviews {
[super layoutSubviews];

//                              x     y   width height
float h = expectedLabelSize.height;
[imageView setFrame:CGRectMake(    8.0, 10.0,  20.0, 20.0)];
[t1 setFrame:CGRectMake(          40.0,  4.0, 280.0, h)]; //total width 320
[t1 setBackgroundColor:[UIColor redColor]];
[t2 setFrame: CGRectMake(        235.0, h+4, 85.0, 15.0)];
NSLog(@"-layoutSubviews--> h:%f w:%f",h,expectedLabelSize.width);
}


滚动后,高度计算为完全相同的值,现在帧最终具有此处指定的高度。

视图中将出现

[self.tableView beginUpdates];
[self.tableView endUpdates];

我曾经遇到过与动态调整单元格大小以容纳UITextView内容完全相同的问题。我最终使用了免费的Sensive TableView框架,该框架可以自动计算所有单元格的高度

你为什么不设法解决真正的问题呢?计算单个单元格的高度是可以做到的。因为计算是正确的——因为它在我滚动时起作用。我所需要做的就是以编程方式向下滚动视图,或者以某种方式强制重新计算所有单元格。重新加载数据不会触发此操作。是否尝试调用
[self.tableView beginUpdates]
,然后立即调用
[self.tableView endUpdates]
?这应该会触发单元格高度的重新计算。不幸的是,这不起作用-到目前为止,唯一有效的方法是在表格单元格出现在顶部时移动它们,这样它们就必须返回,然后才能正确计算……@user387184:您可能必须显示
cellforrowatinexpath
heightforrowatinexpath
方法。我将-只需要准备它,因为它非常复杂,并且调用了其他几个方法。。。谢谢因此,我添加了代码和上面实际发生的事情的解释……iPhone的布局似乎有问题,而不是我对高度的计算。我最后只是添加了一条线的高度,希望它在我所有的情况下都能工作——电池更高,但最初和滚动后看起来都不错。无论如何,我没有找到解释。