在prepareForSegue中访问CollectionView indexPath.row

时间:2015-01-06 02:47:48

标签: ios swift uicollectionview nsindexpath

我试图从我的prepareForSegue函数中的collectionView访问indexPath.row变量。我有以下代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let selectedIndex = collectionView.indexPathsForSelectedItems() as NSIndexPath
    //let myIndexPath = self.collectionView.indexPathForCell(cell: LocalFeedCollectionViewCell.self)

    if (segue.identifier == "toFullImage")
    {
        var fullImageVC: FullImageViewController = segue.destinationViewController as FullImageViewController
        fullImageVC.imageTitle = self.imageTitles[selectedIndex.row]
    }
}

我收到了selectedIndex的以下错误 - '(UICollectionView,numberOfItemsInSection:Int) - >诠释'没有名为' indexPathsForSelectedItems'的成员。在Objective-C中,我看到以下解决方案

NSIndexPath *indexPath = [self.collectionView indexPathForCell:sender];

但我不确定如何在swift中实现它/它是否会起作用。

由于

2 个答案:

答案 0 :(得分:1)

一个明显的问题是indexPathsForSelectedItems()没有返回可以强制转换为NSIndexPath的内容。它返回一个数组。如果您尝试转换为索引路径数组,则需要向下转为[NSIndexPath],而不是NSIndexPath

答案 1 :(得分:0)

sender参数是集合视图的单元格。首先将其转换为UICollectionViewCell,然后从集合视图中询问indexPath。这是一个样本

if let cell = sender as? UICollectionViewCell {
    if let indexPath = collectionView.indexPathForCell(cell) {
        // use indexPath here
    }
}