reloadRowsAtIndexPaths更新表视图的contentOffset

时间:2015-03-11 21:21:49

标签: ios objective-c uitableview reloaddata contentoffset

我正在尝试从tableview重新加载特定行,但是在重新加载之后tableview的contentOffset被重置为(0,0)。我尝试在reloadRowsAtIndexPaths周围添加[tableview beginUpdates][tableview endUpdates],但没有改变行为。

问题在这里Calling reloadRowsAtIndexPaths removes tableView contentOffset被问到,但它没有解决问题。我很确定动画与此行为无关。我还不确定如何在重新加载tableview行的同时保持tableview的内容Offset。

[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

2 个答案:

答案 0 :(得分:7)

我猜你已经实现了tableView:estimatedHeightForRowAtIndexPath:并让它返回0。

reloadRowsAtIndexPaths:withRowAnimation:之后,tableView使用tableView:estimatedHeightForRowAtIndexPath:中给出的估计高度确定其偏移量。因此,除非您返回的值是准确的,否则实现它将导致在重新加载后tableView的偏移量发生变化。我遇到了类似的问题并通过删除tableView:estimatedHeightForRowAtIndexPath:的实现来修复它。

答案 1 :(得分:2)

如果您尚未实施任何估计的高度委托方法,则使用更准确的值更新estimatedRowHeightestimatedSectionHeaderHeight也有助于缓解此问题。

您可以使用视图检查器查找单元格和标题的高度。