Ich habe eine CollectionView
, die Bilder für den Benutzer anzeigt. Ich lade diese im Hintergrund herunter, und wenn der Download abgeschlossen ist, rufe ich die folgende Funktion auf, um die collectionViewCell
zu aktualisieren und das Bild anzuzeigen.Überprüfen Sie, ob die Zelle bei indexPath auf dem Bildschirm sichtbar ist UICollectionView
func handlePhotoDownloadCompletion(notification : NSNotification) {
let userInfo:Dictionary<String,String!> = notification.userInfo as! Dictionary<String,String!>
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!
}
}
}
Dies funktioniert gut, wenn die Zelle auf dem Bildschirm noch sichtbar ist, aber wenn es nicht, dass ich auf der folgenden Zeile erhalten einen fatal error: unexpectedly found nil while unwrapping an Optional value
Fehler ist:
let cell = followedCollectionView.cellForItemAtIndexPath(indexPath) as! FeaturedCitiesCollectionViewCell
Nun ist diese Funktion nicht einmal müssen aufgerufen werden, wenn die collectionViewCell noch nicht sichtbar ist, da in diesem Fall das Bild sowieso in der cellForItemAtIndexPath
Methode gesetzt wird.
Daher meine Frage, wie kann ich diese Funktion ändern, um zu überprüfen, ob die Zelle, mit der wir es zu tun haben, momentan sichtbar ist oder nicht. Ich kenne die collectionView.visibleCells()
jedoch bin ich mir nicht sicher, wie man es hier anwendet.