Проверьте, видна ли ячейка в indexPath на экране UICollectionViewIOS

Программируем под IOS
Anonymous
Проверьте, видна ли ячейка в indexPath на экране UICollectionView

Сообщение Anonymous »

У меня есть CollectionView, который отображает изображения пользователю. Я загружаю их в фоновом режиме, а когда загрузка завершается, я вызываю следующую функцию, чтобы обновить коллекциюViewCell и отобразить изображение.

Код: Выделить всё

func handlePhotoDownloadCompletion(notification : NSNotification) {
let userInfo:Dictionary = notification.userInfo as! Dictionary
let id = userInfo["id"]
let index = users_cities.indexOf({$0.id == id})
if index != nil {
let indexPath = NSIndexPath(forRow: index!, inSection: 0)
let cell = followedCollectionView.cellForItemAtIndexPath(indexPath) as! FeaturedCitiesCollectionViewCell
if (users_cities[index!].image != nil) {
cell.backgroundImageView.image = users_cities[index!].image!
}
}
}
Это отлично работает, если ячейка в данный момент видна на экране, однако если это не так, я получаю

Код: Выделить всё

fatal error: unexpectedly found nil while unwrapping an Optional value
ошибка в следующей строке:

Код: Выделить всё

 let cell = followedCollectionView.cellForItemAtIndexPath(indexPath) as! FeaturedCitiesCollectionViewCell
Теперь эту функцию даже не нужно вызывать, если коллекцияViewCell еще не видна, потому что в этом случае изображение будет задано в методе cellForItemAtIndexPath в любом случае.

Отсюда и мой вопрос: как я могу изменить эту функцию, чтобы проверить, видна ли в данный момент ячейка, с которой мы имеем дело, или нет. Я знаю о коллекцииView.visibleCells(), однако не знаю, как ее здесь применить.

Подробнее здесь: https://stackoverflow.com/questions/382 ... ectionview

Вернуться в «IOS»