为什么popViewControllerAnimated运行这么长时间?

时间:2015-08-05 03:08:08

标签: ios swift photokit

我有一个辅助viewController,允许我从相机胶卷中删除图像。问题是,completionHandler会像它想象的那样触发,但popViewController实际上似乎并没有运行大约8秒。它肯定会激发,因为我可以看到可选的输出。我检查了弹出,它运行正常。我检查了viewWillDisapear事件,它也会触发,我预计考虑到导航控制器还没有弹出视图当前的viewController。

PHPhotoLibrary.sharedPhotoLibrary().performChanges({

    PHAssetChangeRequest.deleteAssets(assetsToDelete)
        return
    }, completionHandler: { success, error in
       if success {
           println("success")
           println(navigationController.popViewControllerAnimated(true))
           println("so slow")
       }
       if let error = error {
           println(error)
       }
       return
})

2 个答案:

答案 0 :(得分:6)

这是文档所说的:

  

Photos执行更改块和完成处理程序块   在任意串行队列上。要更新应用的用户界面,请执行以下操作:   更改,将工作分配到主队列。

导航控制器需要从主线程执行,因此您需要将调用包装为类似

的内容
dispatch_async(dispatch_get_main_queue()) { 
    navigationController.popViewControllerAnimated(true)
} 

答案 1 :(得分:5)

Swift 3

DispatchQueue.main.async() {
    self.navigationController?.popViewController(animated: true)
}