У меня есть разворот, который возвращается к предыдущему контроллеру и сохраняет изображение в библиотеке 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
})
})
})
}
}
Подумайте о «асинхронном». – matt
Хммм ... Я новичок в Swift, и не знаю, что вы имеете в виду ... Не могли бы вы пояснить, пожалуйста, Мэтт? Благодарю. –