2015-07-11 88 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

我明白了。再次感謝。 –

相關問題