Jerk当用户位于UITableView的底部时重新加载UITableView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jerk当用户位于UITableView的底部时重新加载UITableView相关的知识,希望对你有一定的参考价值。
所有,
我面临一些简单的问题,比如我有多个部分,我显示每个部分的相关数据,当一行中的某些UIButton
操作发生变化时,部分中的数据会根据它进行更改。
当我在theUITableView
的底部时,如果点击某个按钮,则会发生重新加载,并且UITableView
将转到上一个位置(部分起始位置)。虽然我们重新加载数据,但我们怎么能处于相同的位置。
重新加载数据后,您可以在此处将代码添加到scrollToIndexPath
//set your indexPath
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:([self.myTable numberOfRowsInSection:0] - 1) inSection:0];
[[self myTable] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
我不明白为什么桌面视图中有混蛋。也许你可以重新加载你正在改变的细胞。尝试
NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:3 inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[myUITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
我发现当你没有正确设置estimatedHeightForRowAt时,reloadData()函数会给出Jerk。此函数应返回一个接近您认为单元格高度的值。如果运行时单元格高度和返回值之间的差异太大,那么在重新加载tableView时它会产生一个混蛋。
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 400.0
}
适当设置此值,它不会加速。许多人认为你可以将任何价值传递给它并且没关系,但它不是那样的。
我在这里经过400,因为我的细胞高度从350-400变化到1200-1300之间的任何值。因此400估计值正常运行。我尝试了100,但后来因为价值100不合适而抽搐。
以上是关于Jerk当用户位于UITableView的底部时重新加载UITableView的主要内容,如果未能解决你的问题,请参考以下文章
如何让 tableFooterView 始终位于 UITableView 的底部
在 CellForRowAt 中包含用于自定义 UIView 的 nib 文件,在滚动时会产生 jerk