Моя проблема в том, что когда я сохраняю изображение в библиотеку фотографий, мой collectionView не обновляется. Если я нажимаю на первое изображение, оно открывает недавно сохраненное изображение, но визуально collectionView никогда не обновляется.Я думал, что reloadData () работает таким образом, но я думаю, что это не так.
Когда приложение загружается, пользователь выбирает фотографию из collectionView (библиотеки фотографий iPhone), затем отправляет ее в другой вид, где он редактирует изображение, а затем сохраняет его в библиотеке и возвращается к первому виду, используя раскручивающиеся сегменты..
Мой код:
class pickerViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
var activityIndicator:UIActivityIndicatorView = UIActivityIndicatorView()
var imageArray = [UIImage]()
override func viewDidLoad() {
mygtukasMenu.layer.cornerRadius = 10
mygtukasMenu.clipsToBounds = true
grabPhotos()
kolekcija.reloadData()
}
@IBOutlet weak var kolekcija: UICollectionView!
func grabPhotos(){
let imgManager = PHImageManager.default()
let requestOptions = PHImageRequestOptions()
requestOptions.isSynchronous = false
requestOptions.deliveryMode = .opportunistic // Quality of images
requestOptions.isNetworkAccessAllowed = true
requestOptions.isSynchronous = true
requestOptions.progressHandler = { (progress, error, stop, info) in
print("progress: \(progress)")
}
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
if let fetchResult : PHFetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions) {
if fetchResult.count > 0 {
for i in 0..<fetchResult.count {
imgManager.requestImage(for: fetchResult.object(at: i) , targetSize: CGSize(width: 150, height: 150), contentMode: .aspectFill, options: requestOptions, resultHandler: {
image, error in
self.imageArray.append(image!)
})
}
}
else {
print("You got no photos")
kolekcija.reloadData()
}
}
kolekcija.reloadData() // UPDATED
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
grabPhotos()
kolekcija.reloadData() // UPDATED
}
}