gpt4 book ai didi

swift - 当主类的父类(super class)是 UICollectionViewCell 时,如何执行Segue或从单元格转到另一个 View

转载 作者:行者123 更新时间:2023-11-30 10:34:31 25 4
gpt4 key购买 nike

我有一个UICollectionViewCell类型的类。在这个类中,我有另一个CollectionView,当我选择这个内部 Collection View 的一个单元格时,我会转到另一个 View 或执行segue。我真的需要一些帮助,因为类是 CollectionViewCell 并且 performSegue() 不起作用。

class MyGamesController: UICollectionViewCell,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource, UICollectionViewDelegate {


func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {


// performSegue is not working here


}
}

最佳答案

您可以使用 swift 协议(protocol)做您想要的事情阅读更多 HERE

首先您需要知道performSegue()适用于UIViewController

您需要为您的 collectionViewCell 创建一个协议(protocol),我猜这是 MyGamesController ,如下所示:

protocol MyGamesControllerDelegate {
func insidCellDidSelect()
}

并将其实例添加到您的类中:

var delegate : MyGamesControllerDelegate?

现在,当您在 MyGamesControllerdidSelectItemAt 中调用 delegate?.insidCellDidSelect 时,您可以通过执行以下步骤在父 VC 中触发它:

当您创建 MyGamesController 实例时,即在 cellForItemAt 中,将单元格委托(delegate)附加到父 ViewController,父级 ViewController 如下创建:

   class TheVCYouWantToPerformSegue : MyGamesControllerDelegate {
...

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = ... as! MyGamesController
cell.delegate = self

然后您可以在 VC 主体内实现协议(protocol)方法并收到通知:

func insidCellDidSelect() {
//Perform Segue goes here
}

关于swift - 当主类的父类(super class)是 UICollectionViewCell 时,如何执行Segue或从单元格转到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58364191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com