Zusammenfassend und bieten eine vollständige Lösung.
Das Problem:
Wenn UIRefreshControl während Bildschirm Übergang animieren, wird es sichtbar bleiben, aber wird Animieren nicht. Video https://vid.me/Bkb7
Auch, wenn Pull, um Animation aktualisiert wurde gestartet, aber nicht abgeschlossen, und dann wurde der Übergang durchgeführt, UIRefreshControl wird versteckt, aber fest. Video https://vid.me/Bkb7
Lösung:
starten UIRefreshControl Animation auf viewWillAppear und es auf viewDidDisappear beenden. Speichern Sie den Aktualisierungsstatus, um zu wissen, wann UIRefreshControl angezeigt werden soll.
Bellow ist die ganze Lösung, die auch die richtige Animation und einfaches Pull, um Animation zu aktualisieren behandelt.
In den UITableView oder Unterklasse
Initialisierung:
/// Refresh indicator
var refreshControl = UIRefreshControl()
/// Refresh state
var isRefreshing = false
/// Refresh controll update funcion. Set to enable pull to refresh
var refreshControllUpdateFunction: (() ->())?
/// Prepeares UIRefreshControll. Call from init
func initRefreshControl(){
addSubview(refreshControl)
refreshControl.addTarget(self, action: "refreshControllTarget", forControlEvents: .ValueChanged)
refreshControl.beginRefreshing()
isRefreshing = true
}
Superview Event-Handler:
/// Call on viewWillApper
func superviewWillApper(){
if isRefreshing && !refreshControl.refreshing{
startRefreshAnimation()
}
}
/// Call on viewDidDisapper
func superviewDidDisappear(){
endRefreshAnimation(false, dataFetched: !isRefreshing)
}
UIRefreshControl Animation Handler:
/// Presents animating UIRefreshControll
func startRefreshAnimation(){
refreshControl.beginRefreshing()
contentOffset = CGPointMake(0, -refreshControl.bounds.size.height)
isRefreshing = true
}
/// Hides UIRefreshControll and saves state of refresh
func endRefreshAnimation(wasEmpty: Bool, dataFetched: Bool){
refreshControl.endRefreshing()
isRefreshing = !dataFetched
if !wasEmpty{
setContentOffset(CGPointZero, animated: true)
}else{
setContentOffset(CGPointZero, animated: false)
}
}
Add
table.isRefreshing = true
Anfang der Refresh-Aufruf.
Ergebnis Video https://vid.me/LyuI
sein Kann es einen Fehler in ios selbst? – ilyabreev
Zu viele Lösungen, die nicht funktionieren. – ilyabreev