UITableView 重新加载完成后是否可以得到回调?

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

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

这里有一些相关问题,但它们并不能完全回答我的问题。
UITableView,重新加载时滚动到底部?
如何在最后一个单元格上启动 UITableView

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

iphone ios uitableview animation scroll
2个回答
0
投票

这里有一些巧妙的方法:

1)当您调用 reloadData 时,您的 cellForRowAtIndexPath: 委托函数将为每个可见单元格调用一次。您可以对这些进行计数,然后在调用函数足够多次后触发操作。

2)我敢打赌其他一些 UITableViewDelegate 函数也会以确定性方式被调用。也许您可以在其中一个函数中调用刷新函数,也许会有一点延迟。

3) 您还可以使用performSelector:withObject:afterDelay: after [tableView reloadData] 并使用一些硬编码的延迟。


-3
投票

这不是一个理想的解决方案,但我已经使用 UIView 动画和相应的完成回调解决了这个问题。我将其放在 UITableView 类别中。正如您所期望的那样工作。

- (void)reloadDataWithCompletion:(void (^)(BOOL finished))completion {
  [UIView animateWithDuration:0.33 animations:^(){
    [self reloadData];
  }completion:completion];
}
© www.soinside.com 2019 - 2024. All rights reserved.