我正在发送从collectionView选择的图像。问题是应用程序总是发送以前选择的图像。 indexPath有什么问题?
这是didSelectItemAt函数:
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let options = PHImageRequestOptions()
options.deliveryMode = .highQualityFormat
options.isNetworkAccessAllowed = true
options.isSynchronous = true
PHImageManager.default().requestImage(for: fetchResult.object(at: indexPath.item), targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: options, resultHandler: { image, error in
guard let image = image else { return }
self.image = image
})
performSegue(withIdentifier: "segue099", sender: self)
}
答案 0 :(得分:0)
来自Docs
默认情况下,此方法异步执行。如果从后台线程调用它,则可以将options参数的isSynchronous属性更改为true,以阻止调用线程,直到请求的图像准备就绪或发生错误为止,此时Photos会调用结果处理程序。
所以
performSegue(withIdentifier: "segue099", sender: self)
在获取图像之前运行,导致其通过旧图像,因此true
isSynchronous
或将segue放入回调中