私はマスターコントローラに表示されたコレクションビューのセルを駆動するURLの文字列配列を持っています。IOS Swift Segueサポートするアレイではなく選択したCellのデータを使用
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
}
マイcollectionViewControllerが正しく、私は配列を持っているURLのすべての画像が表示されます。私のカスタムセルは、そのイメージプロパティ次のように関数呼び出しを経由して、バックグラウンドでロードされているUIImageViewを持っています。
DetailViewに移行すると、(画像がキャッシュ内にあるにもかかわらず)新しいURLの文字列に基づいて新しいダウンロードをトリガーするのではなく、セルにダウンロードされたデータを使用したい配列。だから私は、次のやっている:
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
}
}
しかし、cell.image.image
戻りnil
ので、私のアプローチは機能していません。
私は次のように私の写真画像のためのクラスを設定することによって、より従来の方法でこれを行うことができます:
urlStr: String
theImage: UIImage
しかし、私はnil
を取得していますなぜ私が疑問に思って、私がイメージにアクセスする方法データをセルから直接取得する。
使用 'collectionViewを.cellForItemAtIndexPath( indexPath) 'の代わりに' dequeueReusableCellWithReuseIdentifier'を使用します。 – Caleb
loadImageInBackgroundのコードを貼り付けることはできますか?問題を特定するのに役立つでしょう –
[UICollectionViewでcell atIndexを取得する方法は?](http://stackoverflow.com/questions/30405726/how-to-get-cell-atindex-in-uicollectionview) -with-swift) – Caleb