是否有可能在UITableView重新加载完成后获得回调?

时间:2011-03-08 21:34:12

标签: iphone ios uitableview animation scroll

我正在我的表视图中重新加载一些单元格。重新加载完成后,我想滚动以便它们可见。我知道scrollToRowAtIndexPath:atScrollPosition:方法。但是我需要在重新加载完成后调用它,因为重载会改变行高。

以下是一些相关问题,但它们并没有完全回答我的问题 UITableView , Scroll to bottom on reload?
How to Start UITableView on the Last Cell

编辑 - 我的重新加载不会插入或删除任何行。相反,我正在重新加载一个或多个单元格以反映更新的信息。

2 个答案:

答案 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];
}