如何从 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?

UICollectionView如何从委托中重新加载数据

如何从 UICollectionView 中弹出一个 uicollectionViewCell?

如何从 UICollectionView 中正确删除单元格?