【发布时间】:2016-07-26 10:57:03
【问题描述】:
我是 Swift 的初学者。
我的UIViewController 中有CollectionView,当用户点击CollectionViewCell 时,我需要将数据传递给另一个ViewController。
我试图覆盖prepareForSegue,但我注意到它首先调用然后在didSelectItemAtIndexPath 上编码。
我的第一个 ViewController 代码:
import UIKit
class ViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension ViewController : UICollectionViewDataSource,UICollectionViewDelegate{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return items.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collCell", forIndexPath: indexPath) as! MainCollectionViewCell
...
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
itemId = items[indexPath.item].id
let distinationViewController = DistinationViewController()
distinationViewController.itemId = itemId
}
}
我的 Distination 视图控制器代码
import UIKit
class DistinationViewController: UIViewController{
var itemId : String!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print(itemId)
}
}
DistinationViewController中itemId的值为nil
谢谢
【问题讨论】:
-
你从collectionview单元设置了一个segue?
-
@Keviv 是的,我有
-
好的,你需要做两件事。 1. 从 ViewController 而不是从单元连接你的 segue。 2. 在
collectionView:didSelectItemAtIndexPath中调用performSegueWithIdentifier并在那里获取目标视图控制器并在那里分配itemID。 -
好的,但是我在同一个视图控制器中有 3 个集合视图,我如何确定哪个启动了 segue
-
请看我的回答,
标签: ios xcode swift uiviewcontroller uicollectionview