2017-03-28 19 views
0

こんにちは私は初心者で、非常に基本的なセグに固執しています!私はちょうどあなたがちょうどあなたが単にsubscriptで配列にアクセスする必要がセグエで値を渡したい場合は、送信者などサンダル[indexPath.row] sandalNameため おかげSwift 3 Segue from UICollectionView Cell

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! shoeCollectionViewCell 
    let sandalCell = sandals[indexPath.row] 
    cell.sandalImage.image = UIImage(named: sandalCell["image"]!) 
    cell.sandalStyleName.text = sandalCell["styleName"] 
    cell.sandalPrice.text = sandalCell["price"] 
    return cell 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "shoeDetailSegue"{ 
     var detailPage = segue.destination as! shoeDetailViewController 
     let selectedCell = sender as! UICollectionViewCell 
     let indexPath = collectionView?.indexPath(for: cell) 
     detailPage.getName = sandals[indexPath!.row].sandalName 
     detailPage.getPrice = sandals[indexPath!.row].sandalPrice 
     detailPage.getImage = sandals[indexPath!.row].sandalImage 
    } 
} 
+0

http://stackoverflow.com/a/41887007/5461400この –

+0

をメモとして私たちに 'sandals'配列 –

+0

の宣言を表示してみてください:' VARのdetailPage = segue.destinationとして! shoeDetailViewController'は 'var detailPage = segue.destination as 'でなければなりません。 ShoeDetailViewController'は不正な変数名の規則を無視します。 – TheCodingArt

答えて

2

を使用する正しい構文を知りたいですあなたがやっているのと同じようにcellForItemAt

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "shoeDetailSegue"{ 

     var detailPage = segue.destination as! shoeDetailViewController 
     let selectedCell = sender as! UICollectionViewCell 
     let indexPath = collectionView?.indexPath(for: cell) 
     let sandal = sandals[indexPath!.row] 
     detailPage.getName = sandal["styleName"]! 
     detailPage.getPrice = sandal["price"]! 
     detailPage.getImage = UIImage(named: sandal["image"]!) 
    } 
} 
関連する問題