我试图从我的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中实现它/它是否会起作用。
由于
答案 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
}
}