为什么segue没有在这种情况下解雇

时间:2015-12-03 01:43:01

标签: ios swift uiviewcontroller segue

我将视图控制器的黄色部分中的segue拖放到另一个视图控制器,黄色部分的意思是: enter image description here

然后我对服务器进行网络呼叫,我处理响应,然后我想解雇segue,我这样做:

 let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
            // bla bla here

self.performSegueWithIdentifier(SegueIdentifier.receivedResponse.rawValue, sender: self)
                }catch {

                }
            }
        })
        task.resume()

如你所见,我打电话给perform segue

然后我添加prepareForSegue

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let identifier = segue.identifier
        if let identifier = identifier {
            switch identifier {
            case SegueIdentifier.receivedResponse.rawValue:
                let destination = segue.destinationViewController as! ResponsesTableViewController
                destination.responses = self.responses
                break;
            default:
                break;
            }
        }
    }

我把断点,prepareForSegue内的所有行一直到休息,所有已执行但第二个视图控制器没有显示

1 个答案:

答案 0 :(得分:2)

完成处理程序将在后台队列上运行。 UI操作需要在主队列上进行。因此,在您的完成处理程序闭包中使用:

dispatch_async(dispatch_get_main_queue(), {
    self.performSegueWithIdentifier(SegueIdentifier.receivedResponse.rawValue, sender: self)
})