如何在collectionViewCell上执行segue时发送indexpath?

时间:2017-05-24 11:54:09

标签: swift uicollectionview segue

我有一个具有相似单元格的集合视图控制器,我希望每个单元格打开下一个具有特定内容的viewController。我想我必须发送带有segue的indexpath.row,但在这部分我遇到了一个错误:

<img id="asd"

2 个答案:

答案 0 :(得分:0)

在上面的代码中:

    newViewController.passedValue = indexPath.row // exactly here

这里indexPath的价值是多少?是实例变量吗?

不使用segue,而是使用UICollectionViewDelegate方法:

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
    //Push your controller here
}

答案 1 :(得分:0)

您的代码中存在一些错误。 indexPath.row函数中未声明prepare变量。要将选定的单元格信息传递给另一个视图控制器,首先需要在类中添加一个全局变量。

var selectedCell = 0

接下来在您的班级中实现函数didSelectRowAtIndexPath。每次选择单元格时都会调用此函数。在此函数中获取单元格信息并将其分配给selectedCell var

override func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
        selectedCell = indexPath.row
    }

现在在prepare方法中使用此var值并将其传递给下一个控制器

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "YourIdentifier" {
            let VC = segue.destination as! YourViewController 
            VC.passed = selectedCell 
        }
    }

希望这会有所帮助。