我以前从 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 传递。我怎样才能做到这一点 ?
答案 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