2016-11-24 7 views
0

私はWeb URL(JSON)からデータを取得するのにAlamofireを使用しています。私は私のプロジェクトにRefreshControlへのプルを実装しようとしています。私はそれを行ったが、それが正しかったのか、リフレッシュ時にデータが更新されているのか分からない。私のコード:Swift 3を使用してリフレッシュとAlamofireにプル

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() 


    })   
} 

これは間違いありませんか?

答えて

2

正しく実行していますが、tableViewをリロードしてメインスレッドでUIRefreshControlを停止する必要があります。

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

注:viewDidLoadまたはインターフェイスビルダーで一度それを設定する必要が代わりにAPI要求に常にseparatorStyleを設定します。

+0

私はこの約Niravをどこに置くのですか? – rob

+0

現在、tableViewをリロードしているのと同じ場所で、その2行をメインスレッドに追加するだけです。 –

+0

Nirav、上記のすべてのコードは 'override func viewDidLoad(){super.viewDidLoad()'に入れなければなりませんか? – rob

関連する問題