我将视图控制器的黄色部分中的segue拖放到另一个视图控制器,黄色部分的意思是:
然后我对服务器进行网络呼叫,我处理响应,然后我想解雇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
内的所有行一直到休息,所有已执行但第二个视图控制器没有显示
答案 0 :(得分:2)
完成处理程序将在后台队列上运行。 UI操作需要在主队列上进行。因此,在您的完成处理程序闭包中使用:
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier(SegueIdentifier.receivedResponse.rawValue, sender: self)
})