2017-06-27 13 views
0

我想基於API的JSON響應更新按鈕的標題。Button.setTitle不會發生,直到點擊按鈕

JSON請求以及按鈕標題的設置發生在我的視圖控制器的viewDidLoad中,但按鈕的標題只有在單擊按鈕後纔會更新。

以前有人遇到過這種情況嗎?

以下發生在視圖內負載。

session.dataTask(with: request) {data, response, err in 
     if let data = data{ 
      var json: Any 
      do{ 
       json = try JSONSerialization.jsonObject(with: data) 
       //print(json) 
       guard let dictionary = json as? [String: Any] else{ 
        print("oops") 
        return 
       } 
       guard let roster = Roster(json: dictionary) else{ 
        print("oops2") 
        return 
       } 
       let member = roster.pickRandomMembers() 
       self.button.setTitle(member.first_name, for: .normal) 

      } 
      catch{ 
       print(error) 
      } 

     } 
}.resume() 

回答

1

試試這個。 DispatchQueue.main.async()將強制UI更新代碼在主線程上執行

DispatchQueue.main.async() { 
    self.button.setTitle(member.first_name, for: .normal) 
}