我尝试根据来自API的JSON响应来更新按钮的标题。
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()
答案 0 :(得分:1)
试试这个。 DispatchQueue.main.async()
将强制UI更新代码在主线程上执行
DispatchQueue.main.async() {
self.button.setTitle(member.first_name, for: .normal)
}