可以通过这种方式选择UICollectionViewCell并获取indexPath吗?

时间:2016-01-11 07:36:37

标签: ios swift uicollectionview

我有一个场景,我需要获得所选单元格的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?      
     }

1 个答案:

答案 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])
}