我正在我的表视图中重新加载一些单元格。重新加载完成后,我想滚动以便它们可见。我知道scrollToRowAtIndexPath:atScrollPosition:方法。但是我需要在重新加载完成后调用它,因为重载会改变行高。
以下是一些相关问题,但它们并没有完全回答我的问题
UITableView , Scroll to bottom on reload?
How to Start UITableView on the Last Cell
编辑 - 我的重新加载不会插入或删除任何行。相反,我正在重新加载一个或多个单元格以反映更新的信息。
答案 0 :(得分:0)
以下是一些你可以做到的hacky方法:
1)当你调用reloadData时,你的cellForRowAtIndexPath:delegate函数将为每个可见单元调用一次。您可以对这些进行计数,然后在调用该函数足够次之后触发操作。
2)我打赌其他一些UITableViewDelegate函数也会以确定的方式被调用。也许你可以在其中一个中调用刷新函数,可能会有一点延迟。
3)你也可以使用performSelector:withObject:afterDelay:在[tableView reloadData]之后使用一些硬编码延迟。
答案 1 :(得分:-3)
不是一个理想的解决方案,但我使用UIView动画和相应的完成回调来解决这个问题。我将它放在UITableView类别中。像你期望的那样工作。
- (void)reloadDataWithCompletion:(void (^)(BOOL finished))completion {
[UIView animateWithDuration:0.33 animations:^(){
[self reloadData];
}completion:completion];
}