如何从索引方式传递UICollectionView中的数据

时间:2017-01-31 04:51:45

标签: uitableview swift3 uicollectionview uicollectionviewcell

我以前从 tableView 传递了一些数据:

.state('home', {
                url: '/home',
                //templateUrl declared here will not be picked up
    views: {
                    //main layout template
                    '': {
                        templateUrl: 'dir1/dir2/home.controller.html',
                        controller: 'homeCtrl',
                        controllerAs: 'vm'
                    },
                    //page1@home. //partial template.
                    'page1@home':  {
                        templateUrl: 'dir1/dir2/page1.controller.html',
                        controller: 'page1Ctrl',
                        controllerAs: 'vm'
                    },
                    ...

        } 
})

正如您所看到的那样,当我点击特定的单元格时,它会从中抓取一些数据并传递相对于单元格的数据。现在我想用 CollectionView 做同样的事情。当我点击 CollectionView 的特定时,我想从中获取一些值并通过 segue 传递。我怎样才能做到这一点 ?

1 个答案:

答案 0 :(得分:1)

要在prepare(for:sender:)方法中访问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 } } }

    bokningar