2016-11-24 2 views
0

Ich verwende Alamofire, um Daten von einer Web-URL (JSON) zu erhalten. Ich versuche, Pull zu RefreshControl in meinem Projekt zu implementieren. Ich habe es getan, weiß aber nicht, ob es korrekt ist oder ob die Daten aktualisiert werden, wenn sie aktualisiert werden. Mein Code ist:Pull zum Aktualisieren und Alamofire mit Swift 3

var refresh = UIRefreshControl() 

refresh.addTarget(self, action: #selector(self.refreshData), for: UIControlEvents.valueChanged) 

func refreshData() { 

    Alamofire.request("https://www.example.com/api").responseJSON(completionHandler: { 
     response in 
     self.parseData(JSONData: response.data!) 
     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.singleLine 

     self.tableView.reloadData() 
     self.refresh.endRefreshing() 


    })   
} 

Ist das korrekt?

Antwort

2

Sie tun richtig, aber Sie müssen tableView neu laden und UIRefreshControl auf Hauptgewinde stoppen.

DispatchQueue.main.async { 
    self.tableView.reloadData() 
    self.refresh.endRefreshing()    
} 

Hinweis: Statt separatorStyle immer auf API-Anfrage Setzen Sie es einmal mit viewDidLoad oder mit Interface Builder einstellen müssen.

+0

Also, wo etwa wäre ich dieses Nirav? – rob

+0

An derselben Stelle, an der Sie gerade tableView neu laden, fügen Sie einfach diese zwei Zeilen im Hauptthread hinzu. –

+0

Nirav, muss all der obige Code einschließlich meiner in die 'override func viewDidLoad() {super.viewDidLoad()' gehen? – rob

Verwandte Themen