如何从 UICollectionView indexwise 传递数据
Posted
技术标签:
【中文标题】如何从 UICollectionView indexwise 传递数据【英文标题】:how can I pass a data from a UICollectionView indexwise 【发布时间】:2017-01-31 04:51:45 【问题描述】:我之前从 tableView 传递了一些数据,如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if( segue.identifier == "productList_to_detail" )
let VC1 = segue.destination as! ShopItemVC
if afData == 1
if let indexPath = self.tableView.indexPathForSelectedRow
let productIdToGet = sCategory[indexPath.row]
VC1.product_id = productIdToGet.product_id
正如您所见,当我点击特定的 Cell 时,它会从中获取一些数据并传递与 Cell 相关的数据。现在我想用 CollectionView 做同样的事情。当我点击 CollectionView 的特定 item 时,我想从中获取一些价值并通过 segue 传递它。我怎样才能做到这一点 ?
【问题讨论】:
【参考方案1】:要在prepare(for:sender:)
方法中访问collectionView
的选定单元格的数据,这取决于您如何在情节提要中创建segue。
如果Segue
是从UICollectionViewCell
创建到目标ViewController
。
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if( segue.identifier == "productList_to_detail" )
let VC1 = segue.destination as! ShopItemVC
if let cell = sender as? UICollectionViewCell,
let indexPath = self.collectionView.indexPath(for: cell)
let productIdToGet = sCategory[indexPath.row]
VC1.product_id = productIdToGet.product_id
如果Segue
是从源ViewController
创建到目标ViewController
。
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
//Pass indexPath as sender
self.performSegue(withIdentifier: "productList_to_detail", sender: indexPath)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if( segue.identifier == "productList_to_detail" )
let VC1 = segue.destination as! ShopItemVC
if let indexPath = sender as? IndexPath
let productIdToGet = sCategory[indexPath.row]
VC1.product_id = productIdToGet.product_id
【讨论】:
哦,帮助了@NiravD @ArafinMacRussell 欢迎朋友 :)以上是关于如何从 UICollectionView indexwise 传递数据的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView获取当前item的NSIndexPath问题
UICollectionView获取当前item的NSIndexPath问题
如何将 UICollectionViewCell 从一个 UICollectionView 拖到另一个 UICollectionView?