2017-04-26 37 views
0

当某个CollectionView单元格被点击时,我想设置一个变量为不同的字符串。因此cell1被点击然后var cellTapped = "cell1",单元2被点击然后var cellTapped = "cell2"依此类推。有人建议我更改基于单元格单击的变量

“创建一个自定义单元格并保持价值财产和阅读didSelectCell()这个 值”

,但我不知道如何做到这一点(新手)。

(SWIFT 3)

+0

工作是'cell1'和'cell2'只是样品。如果这就是你所需要的,那么将'indexpath.row'附加到'cell'前缀是一个简单的问题。 – toddg

+0

会有更多的单元格,但命名和设置var就像那样很好。但我不知道是在哪里/如何设置它以识别cell1/cells2/cell3/cell4 ...被点击。如果你有这样的示例代码,它会帮助很多@toddg –

回答

1

您需要设置UICollectionViewDelegate您的ViewController,然后实现didSelectItemAt IndexPath当细胞被窃听时调用。

事情是这样的:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    cellTapped = "cell" + String(indexPath.row) 
} 

你也可以有一个字符串数组和索引基于indexPath.row对数组:

let cellStringValues = ["cell1", "cell2", "cell3", ... , "celln"] 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    cellTapped = cellStringValues[indexPath.row] 
} 
+0

当我尝试在下一个视图中获取变量时,它不起作用。在第二个VC中,我让'CV = CollectionViewController()'然后在'viewDidLoad()'我有'lbl.text = CV.cellTapped'它只是没有给出值。 –

+0

您需要将第一个VC的值传递给第二个VC。在第二个VC中创建另一个CollectionView不会给你在前一个视图中点击的值。 – toddg

1

设置您的视图控制器是的委托UICollectionView。你的视图控制器应该从UICollectionViewDelegate继承。然后,在VC的viewDidLoad()中,将UICollectionView的委托变量设置为ViewController。要捕获选择事件,请覆盖以下UICollectionViewDelegate函数。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    cellTapped = "cell\(indexPath.row)" 
} 

详细信息请参考了https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started与收集意见

相关问题