2015-07-11 35 views
-2

我有一个unwind segue可以回到前一个控制器并将图像保存到PHAsset库。放松节奏的作品,节约作品,唯一的问题是,它在图像保存之前放松。因此,图像不会显示在展开的视图控制器上,因为视图控制器在保存图像之前已呈现(图像保存需要一点时间,但它可以返回到视图控制器非常快)。我想知道是否有任何方法可以放松前一个控制器,只有当照片保存后,不是马上。做一些事情之前放松segue(swift)

这里是我的代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "savePicture" { 

     //Image to be saved 
     let newImage = self.appraisalPic.image 

     //Store picture to PHAssets 
     let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
     dispatch_async(dispatch_get_global_queue(priority, 0), { 
      PHPhotoLibrary.sharedPhotoLibrary().performChanges({ 
       let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(newImage) 
       let assetPlaceholder = createAssetRequest.placeholderForCreatedAsset 
       let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection, assets: self.photosAsset) 
       albumChangeRequest.addAssets([assetPlaceholder]) 
       }, completionHandler: {(success, error)in 
        dispatch_async(dispatch_get_main_queue(), { 
         NSLog("Adding Image to Library -> %@", (success ? "Success":"Error!")) 

       //Need code here which doesn't do segue until AFTER picture is saved 
        }) 
      }) 

     }) 
    } 
} 
+1

想想“异步”。 – matt

+0

嗯......我是斯威夫特新手,不确定你的意思...你能否澄清马特?谢谢。 –

回答

1

这个表达式:dispatch_async(dispatch_get_global_queue(priority, 0)

将在后台进行的一切(直到你做的东西再次明确主队列)。

只需消除所有dispatch_async调用即可完成主线程中的所有工作。如果时间太长,请通知用户,以便他知道等待放松继续发射。

+0

谢谢孟迪澄清。如果你不介意,你可以从我的代码中删除我的dispatch_async吗?我正在尝试消除dispatch_async,但是我产生了很多错误。谢谢! –

+0

我明白了。再次感谢。 –

相关问题