【问题标题】:is it possible to get a callback when a UITableView reload is done?UITableView 重新加载完成后是否可以获得回调?
【发布时间】:2011-07-11 10:49:15
【问题描述】:

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

这里有一些相关的问题,但它们并不能完全回答我的问题。
UITableView , Scroll to bottom on reload?
How to Start UITableView on the Last Cell

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

【问题讨论】:

标签: iphone ios uitableview animation scroll


【解决方案1】:

不是一个理想的解决方案,但我已经使用 UIView 动画和相应的完成回调解决了这个问题。我把它放在 UITableView 类别中。按您的预期工作。

- (void)reloadDataWithCompletion:(void (^)(BOOL finished))completion {
  [UIView animateWithDuration:0.33 animations:^(){
    [self reloadData];
  }completion:completion];
}

【讨论】:

    【解决方案2】:

    这里有一些你可以做到的 hacky 方法:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2019-12-18
      • 1970-01-01
      • 2020-12-08
      • 2021-05-20
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多