ios – UIRefreshControl endRefreshing不顺利

前端之家收集整理的这篇文章主要介绍了ios – UIRefreshControl endRefreshing不顺利前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我的数据加载完成并且我的tableView被重新加载时,我在刷新控件调用endRefreshing,然后从其加载状态“跳转”并消失 – 如何实现一个平滑的动画,当完成刷新控件

解决方法

我正在添加一个新的答案,因为唯一的解释不是很精确.这可能是太多的评论.

Halpo解决方案是正确的.但是提到的原因是错误的.

调用 – [NSObject(NSDelayedPerforming)performSelector:withObject:afterDelay:]保证在下一个循环迭代中执行调用.

所以这不行,因为有一个小的延迟,但你正在移动到下一个循环.

实际上你可以将延迟减少到0.0,它仍然可以工作.而且,一个更正确的(在使用该对象意味着实现某事,而不是更好的结果)实现是可能的.

以下是各种代码片段:

// SOLUTION I

[[self tableView] reloadData];
[[self refreshControl] performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.0];

// SOLUTION II (semantically correct)

[[self tableView] reloadData];
[[NSOperationQueue currentQueue] addOperationWithBlock:^{
    [[self refreshControl] endRefreshing];
}];

// SOLUTION III (GCD)

dispatch_async(dispatch_get_main_queue(),^{
    [[self refreshControl] endRefreshing];
}];

编辑

正如johann-fradj指出的,你也可以使用GCD.我喜欢GCD很多,但我认为,解决方案II对于发生了什么是最具描述性的.而且,GCD并不是非常客观的C-ish,所以我个人更喜欢坚持我的解决方案.

原文链接:https://www.f2er.com/iOS/336961.html

猜你在找的iOS相关文章