import UIKit
class ActionCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myLabel: UILabel!
@IBOutlet weak var actionGIF: UIImageView!
@IBAction func actionPressed(sender: AnyObject) {
print(myLabel.text)
Global.actionButtonIndex = myLabel.text!.toInt()! - 1
print(actionGIF.image)
ActionViewController.performSegueWithIdentifier("showActionPreview", sender: nil)
}
}
我试图在用户点击我的集合视图中的一个单元格后执行Segue。似乎无法使用performSegueWithIdentifier执行此操作。 App Screenshot
答案 0 :(得分:1)
performSegue
无法提供实例方法UICollectionViewCell
由于UICollectionViewCell
不是UIViewController
,因此您无法使用performSegue(withIdentifier:sender:)
。您可能更喜欢使用委托来通知您的父视图控制器,然后从那里performSegue
。
查看this answer的详细信息。问题略有不同,但解决方案的方式相同。
答案 1 :(得分:0)
您是否按照名称" showActionPreview"设置了segue标识符。此外,请确保您的segue从父视图控制器链接到故事板中的目标视图控制器。希望这会有所帮助。
答案 2 :(得分:0)
这是一个优雅的解决方案,只需要几行代码:
快速4 + 代码
class MyCustomCell: UICollectionViewCell {
static let reuseIdentifier = "MyCustomCell"
@IBAction func onAddToCartPressed(_ sender: Any) {
addButtonTapAction?()
}
var addButtonTapAction : (()->())?
}
下一步,在
的闭包内部实现要执行的逻辑override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MyCustomCell.reuseIdentifier, for: indexPath) as? MyCustomCell else {
fatalError("Unexpected Index Path")
}
// Configure the cell
// ...
cell.addButtonTapAction = {
// implement your logic here, e.g. call preformSegue()
self.performSegue(withIdentifier: "your segue", sender: self)
}
return cell
}
您也可以将这种方法用于表视图控制器。