我正在尝试从tableview重新加载特定行,但是在重新加载之后tableview的contentOffset被重置为(0,0)。我尝试在reloadRowsAtIndexPaths周围添加[tableview beginUpdates]
和[tableview endUpdates]
,但没有改变行为。
问题在这里Calling reloadRowsAtIndexPaths removes tableView contentOffset被问到,但它没有解决问题。我很确定动画与此行为无关。我还不确定如何在重新加载tableview行的同时保持tableview的内容Offset。
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
答案 0 :(得分:7)
我猜你已经实现了tableView:estimatedHeightForRowAtIndexPath:
并让它返回0。
在reloadRowsAtIndexPaths:withRowAnimation:
之后,tableView使用tableView:estimatedHeightForRowAtIndexPath:
中给出的估计高度确定其偏移量。因此,除非您返回的值是准确的,否则实现它将导致在重新加载后tableView的偏移量发生变化。我遇到了类似的问题并通过删除tableView:estimatedHeightForRowAtIndexPath:
的实现来修复它。
答案 1 :(得分:2)
如果您尚未实施任何估计的高度委托方法,则使用更准确的值更新estimatedRowHeight
和estimatedSectionHeaderHeight
也有助于缓解此问题。
您可以使用视图检查器查找单元格和标题的高度。