2014-12-03 65 views
3

当我打电话给self.refreshControl.endRefreshing()时,它将tableView恢复到它原来的位置。我应该如何进行动画制作,以便流畅地返回到原来的位置endRefreshing()UIRefreshController结束动画问题

+0

我有这个问题和独特的解决方案,我发现是调用reloadData有延误,endRefreshing后。 [self.tableView performSelector:@selector(reloadData)withObject:self.tableView afterDelay:0.2]; – juannn91 2014-12-28 00:49:35

+0

@ user1715438非常感谢。 – uhfocuz 2014-12-28 01:45:49

+0

@ user1715438,我也是,afterDelay适合我,这是唯一的解决方案。 – gabbler 2015-02-15 13:04:59

回答

6

对于有此问题的任何人,在重新加载表数据之前,您必须调用您的endRefreshing方法。否则,当表更新它将覆盖刷新,并导致它看起来越野车。

+0

“endRefreshing”刷新完成时必须显式调用 – alexmorhun 2017-02-23 16:52:10

2
// stop refreshing 
[self.refreshControl endRefreshing]; 

// update tableview 
[self.tableview performSelector:@selector(reloadData) withObject:nil afterDelay:.3]; 
7

试试这个

[CATransaction begin]; 
[CATransaction setCompletionBlock:^{ 
    // reload tableView after refresh control finish refresh animation 
    [self.tableView reloadData]; 
}]; 

[self.refreshControl endRefreshing]; 
[CATransaction commit]; 
1

这对我的作品与斯威夫特2

if self.refreshControl.refreshing { 
    self.refreshControl.endRefreshing() 
} 

GlobalHelper.setTimeout(0.1, block: { 
    self.tableView.reloadData() 
}) 

,这是我的超时功能:

static func setTimeout(delay:NSTimeInterval, block:()->Void) -> NSTimer { 
    return NSTimer.scheduledTimerWithTimeInterval(delay, target: NSBlockOperation(block: block), selector: #selector(NSOperation.main), userInfo: nil, repeats: false) 
} 
1

我也遇到过这个问题。对于endRefreshing()文档状态:

如果还启用了动画,则使用动画隐藏控件。

我包裹在一个UIView动画块呼叫和过渡变得平滑:

UIView.animateWithDuration(0.5) { 
    self.refreshControl.endRefreshing() 
} 
0

在夫特3的iOS 10,我得到了类似的方法作为ibrahimyilmaz和这里是:

self.refreshControl.endRefreshing() 
//Need to dispatch the alertView, otherwise, RefreshControl.endRefreshing() doesn't work. 
let when = DispatchTime.now() + 1 
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] in 
    self?.showSettingAlertView() 
} 

起初,我是在调度endRefreshing的建议,在许多线程中,但实际上这是另一种方式对我来说很有用。

附加信息:此代码在位置:didChange:delegate中执行,而不是在viewDidLoad或viewWillAppear中执行。 通过其他线程,当您尝试结束刷新并尝试同时显示弹出窗口时,似乎Apple Apple中存在问题。

1

我有这个问题,并尝试了上面的每个建议(和其他类似的线程)。

问题原来是我的情况是......我没有启用界面生成器刷新。我只添加了代码来创建一个刷新控件,并侦听已更改值的事件。它有效,但是像其他人所描述的那样“跳动”。

在界面生成器中启用它可以解决我的问题。如果你已经尝试了其他一切,请检查你的故事板!

Enable Refreshing in your storyboard!