私はFirebase上にある画像で表示されるコレクションビューで作業しています。すべてが正常に動作しますが、私はセグエを実行しようとすると、私はこの行のために、「予期せぬオプションの値をアンラップしながら、nilを見つけ」GET:UICollectionViewセルがnilである
if let indexPath = self.collectionView?.indexPath(for: sender as! UICollectionViewCell){}
私はSOにここに多くの作業の例を見てきましたし、どうやら彼らはすべてで正常に動作しますその行ここで
は、関連するコードの残りの部分である。また、
//grab Firebase objects in viewdidload and put them into productsArray
var productsArray = [ProductsModel]()
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return productsArray.count
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
let imageView = cell.viewWithTag(1) as! UIImageView
//imageView.image = imageArray[indexPath.row]
let getUrl = productsArray[indexPath.row].productImg
imageView.loadUsingCache(getUrl!)
imageView.layer.borderColor = UIColor.lightGray.cgColor
imageView.layer.borderWidth = 1
imageView.layer.cornerRadius = 0
return cell
}
//NAVIGATION
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
performSegue(withIdentifier: "itemSegue", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "itemSegue"){
let destinationController = segue.destination as! ItemViewController
if let indexPath = self.collectionView?.indexPath(for: sender as! UICollectionViewCell){
destinationController.getProduct = productsArray[indexPath.row]
}
}
}
、I重にチェックすべてが接続されており、ストーリーボードに設定されています。
ありがとうございます!次の関数で
おかげで、私はそれを逃した信じることができません。 – Noah
いいえ、送信者としてセルを送信しないでください。indexPathが必要なので、単にindexPathを送信者として送信してください。 –
@ Noah1 Niravは良い点を作っています。 'indexPath'を探しているので、' indexPath'をセルの代わりに 'sender'として送ります。 –