Ich habe ein String-Array von URLs, die die auf dem Master-Controller angezeigten Auflistungsansichtszellen steuern. Meine benutzerdefinierte Zelle hat eine UIImageView, deren Bildeigenschaft im Hintergrund über einen Funktionsaufruf wie folgt geladen:IOS Swift Segue verwendet Daten von ausgewählten Zellen anstelle des unterstützenden Arrays
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell
loadImageInBackground(NSURL(string: self.fotosString[indexPath.row])!, target: cell.image!)
return cell
}
Mein collectionViewController richtig zeigt alle Bilder für die URLs, die ich in dem Array.
Wenn ich zum DetailView übergehe, würde ich gerne die Daten verwenden, die in die Zelle heruntergeladen wurden, anstatt einen neuen Download auszulösen (obwohl das Bild im Cache wäre), basierend auf der URL-Zeichenfolge das Array. So mache ich folgendes:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showImage" {
let dvc = segue.destinationViewController as! DetailViewController
let indexPaths = self.collectionView?.indexPathsForSelectedItems()
let indexPath = indexPaths![0] as NSIndexPath
let cell = self.collectionView!.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell
dvc.currentImage = cell.image.image
}
}
jedoch cell.image.image
kehrt nil
und deshalb mein Ansatz funktioniert nicht.
ich diese wie durch die Einrichtung einer Klasse für meine Fotobilder in einer konventionelleren Weise tun könnte:
urlStr: String
theImage: UIImage
Aber ich frage mich, warum ich die nil
bekommen, und wie ich das Bild zugreifen können Daten direkt von der Zelle.
Verwenden 'Collection .cellForItemAtIndexPath (indexPath) 'statt' dequeueReusableCellWithReuseIdentifier'. – Caleb
könnten Sie den Code für loadImageInBackground einfügen? das wäre hilfreich, um das Problem zu identifizieren –
Mögliches Duplikat von [So erhalten Sie Zelle atIndex in UICollectionView mit swift?] (http://stackoverflow.com/questions/30405726/how-to-get-cell-atindex-in-uicollectionview -mit-swift) – Caleb