我有一个场景,我需要获得所选单元格的indexpath
&在集合视图的特定索引号处具有数组的内容。我可以通过各种方式做到这一点。但我想知道如果有一个与集合视图相同的代码,就像我在下面的代码中对表视图所做的那样 -
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier == "segueupdate"
{
let update = segue.destinationViewController as! EnterDetailViewController
let indexpath = self.tableview .indexPathForSelectedRow
let row = indexpath?.row
print(people[row!])//here it prints the value at particular index of the array
}
}
我觉得这种方法的优点是我不需要写didSelectRowAtIndexPath()
。那么我可以为集合视图做这样的事情,我不需要写didSelectItemAtIndexPath()
吗?到目前为止我的代码在特定行评论错误 -
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let indexPath = self.myCollectionView.indexPathsForSelectedItems()
let selectedIndexPath = indexPath?.first
print(selectedIndexPath)
print( people.objectAtIndex((indexPath?.row)!) //Here I get an error as value of [NSIndexPath] has no member row?
}
答案 0 :(得分:2)
indexPathsForSelectedItems将返回NSIndexPath对象的NSArray或nil,具体取决于您在collectionView中选择的内容。
要修复您尝试过的内容,请执行此操作
let selectedIndexPaths = self.myCollectionView!.indexPathsForSelectedItems()
let selectedIndexPath = selectedIndexPaths?.first
print(selectedIndexPath)
print(people[(selectedIndexPath?.row)!])
但是,如果您只想从阵列中为所选单元格打印某些内容,我会这样做
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
print(people[indexPath.row])
}