2017-01-10 2 views
1

Управление освещением не исчезает после завершения обновления. Он остается анимированным, хотя я называю endRefreshing().RefreshControl не скрывает

import UIKit 

class MyTableViewController: UITableViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     refreshControl = UIRefreshControl() 
     refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh") 
     refreshControl?.addTarget(self, action: #selector(self.refresh), for: UIControlEvents.valueChanged) 
     tableView.addSubview(refreshControl!) 

     setData() 
    } 

    func setData(){ 
     ApiClient.sharedInstance().getData{(myData, error) in 
      if (myData != nil){ 
       DispatchQueue.main.async { 
        self.myLabel.text = myData 
        self.refreshControl?.endRefreshing() 
       } 
      } 

      if (error != nil){ 
       print(error) 
      } 
     } 
    } 

    func refresh(sender:AnyObject) { 
     setData() 
    } 

} 

Вы можете мне помочь?

+0

Вам нужно позвонить endRefreshing в главном потоке. – Starlord

+2

это уже не сделано с помощью «DispatchQueue.main.async {"? – Pascal

+0

Обновляется ли 'self.myLabel.text'? – keithbhunter

ответ

0

beginUpdates и endUpdates сделали магию.

Этот человек загнал меня с ума в течение 1 часа. Наконец, эта часть работала, когда мой сетевой вызов завершается и обновляет представление таблицы.

class TransactionsViewConttroller : MyBaseTableViewController{ 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.refreshControl?.addTarget(self, action: #selector(refresh), for: .valueChanged) 
    } 
    @objc func refresh() { 
     justRefreshTransactions() 
    } 

    private func justRefreshTransactions(){ 
     ServiceRequest.getLatestTransactions(completionBlock : {(error, errorMsg,result) in 
       self.stopRefrshIndic() 
     }) 
    } 

    private func stopRefrshIndic(){ 
     DispatchQueue.main.async { 
      self.tableView.beginUpdates() 
      self.refreshControl?.endRefreshing() 
      self.tableView.endUpdates() 
     } 
    } 

}

Смежные вопросы