2017-05-04 6 views
0

collectionViewCellsを使用し、segue経由で次のViewControllerにデータを送信しようとしています。 indexPathを取得するのは、tableViewCellのように単純ではありませんが、取得するためにこれを行うことはできますが、「オプション値をアンラッピングしている間に予期せず見つからない」エラーが発生します。ここでPreparetoSegue中に選択したUICollectionViewCellのインデックスパスを取得していますか?

は、コードは次のとおりです。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if let cell = sender as? MainCollectionViewCell { 
    if let indexPath = self.collectionview.indexPath(for: cell) { 
     // use indexPath 
    print(indexPath.row) 
    let destvc: H1ViewController = segue.destination as! H1ViewController 
    destvc.backgroundimg.image = UIImage(named: magazines[indexPath.row].image) 

     } 
    } 

} 

私はindexpath.rowを印刷し、値を取得しています。だから私はそれが懸念されている限り私は罰金だと確信しています。私は強制的にアンラッピングしていないことを確認するためにletを使用しています。ここで何が間違っていますか?

+0

segue.destinationとして! H1ViewControllerは、letが正しいタイプであることを確認できるようにします。また、デバッガを使用してみてください。 – Gerriet

+0

また、これは実行時に発生し、確かにコンパイラエラーではないので、そのタグを削除することをお勧めします。 – Gerriet

+0

@Gerrietちょうどその行にもletを使用してみました。まだ何も! –

答えて

0

この謎を解いた。私は宛先ビューコントローラで文字列変数を作成し、画像の文字列名をsegueを通してその変数に送りました。次に、デスティネーションビューコントローラのViewDidLoadメソッドで、その文字列値を使用してイメージビューIBOutletsでイメージを取得します。

関連する問題