Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Button.setTitle不';单击按钮后才能发生_Ios_Swift - Fatal编程技术网

Ios Button.setTitle不';单击按钮后才能发生

Ios Button.setTitle不';单击按钮后才能发生,ios,swift,Ios,Swift,我试图根据API的JSON响应更新按钮的标题 JSON请求以及按钮标题的设置在我的视图控制器的viewDidLoad中发生,但按钮标题在我单击按钮后才会更新 以前有人经历过吗 下面发生在视图did load内部 session.dataTask(with: request) {data, response, err in if let data = data{ var json: Any do{ js

我试图根据API的JSON响应更新按钮的标题

JSON请求以及按钮标题的设置在我的视图控制器的viewDidLoad中发生,但按钮标题在我单击按钮后才会更新

以前有人经历过吗

下面发生在视图did load内部

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

试试这个
DispatchQueue.main.async()
将强制在主线程上执行内部的UI更新代码

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