2014-12-03 109 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!