Jerk当用户位于UITableView的底部时重新加载UITableView

问题描述 投票:1回答:2

所有,

我面临一些简单的问题,比如我有多个部分,我显示每个部分的相关数据,当一行中的某些UIButton操作发生变化时,部分中的数据会根据它进行更改。

当我在theUITableView的底部时,如果点击某个按钮,则会发生重新加载,并且UITableView将转到上一个位置(部分起始位置)。虽然我们重新加载数据,但我们怎么能处于相同的位置。

ios uitableview uibutton reload
2个回答
3
投票

重新加载数据后,您可以在此处将代码添加到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];

0
投票

我发现当你没有正确设置estimatedHeightForRowAt时,reloadData()函数会给出Jerk。此函数应返回一个接近您认为单元格高度的值。如果运行时单元格高度和返回值之间的差异太大,那么在重新加载tableView时它会产生一个混蛋。

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return 400.0
    }

适当设置此值,它不会加速。许多人认为你可以将任何价值传递给它并且没关系,但它不是那样的。

我在这里经过400,因为我的细胞高度从350-400变化到1200-1300之间的任何值。因此400估计值正常运行。我尝试了100,但后来因为价值100不合适而抽搐。

© www.soinside.com 2019 - 2024. All rights reserved.