以编程方式触发的segue后显示的视图不会立即更新

时间:2016-10-25 00:02:39

标签: swift ios10

我创建了两个视图,然后通过ctrl-dragging并创建一个segue将一个视图连接到另一个视图。给这个segue标识符“functionOutput1”

然后我创建了一个函数,并根据函数中的某个输出以编程方式触发了上面创建的segue。

performSegue(withIdentifier: "functionOuput1", sender: self)

视图分段正常,但视图内容直到一分钟后才会出现。

我还需要做些什么吗?

编辑: 我在URLRequest的回调函数中执行此segue

        let task = session.dataTask(with: request as URLRequest, completionHandler: {
            data, response, error -> Void in

            if (error != nil) {
                // there is an error with the request
                print("error: ", error)

            } else {
                // Request was successful. Check the contents of the response.
                print("response: ", response)

                let httpResponse = response as! HTTPURLResponse
                if httpResponse.statusCode != 200 {
                    print("problems with server request")

                } else {
                    print("request successful")
                    //go to next page
                    performSegue(withIdentifier: "functionOuput1", sender: self)
                }
            }
        })

1 个答案:

答案 0 :(得分:1)

这可能是一个线程问题。因为数据是异步返回的。您需要在主线程上运行视图更新。您可以使用以下代码使用Swift 3.0执行此操作:

DispatchQueue.main.async {
    // Your view updates here                
}