为CollectionViewCell创建IBAction

时间:2017-04-17 16:32:50

标签: ios swift xcode uicollectionview uicollectionviewcell

我有一个集合视图,其中包含多个以编程方式创建的单元格。我想在用户点击特定单元格时将变量更新为其他值。例如:单元格1被轻敲 - > var test =" cell1" ,cell2是tapped var test =" cell2"。通常我只是通过从故事板中拖出来创建一个IBAction,但我不确定在这种情况下如何做。

我使用的是Swift 3.1

2 个答案:

答案 0 :(得分:1)

要向UITableViewUICollectionView以及显示数据集合的其他类型的视图添加交互性,您无法使用Storyboard操作,因为内容是在运行时动态生成的,故事板只能用于静态内容。

相反,您需要做的是将UICollectionView的{​​{1}}属性设置为实现UICollectionViewDelegate协议的对象。作为协议一部分定义的方法之一是delegate方法。只要用户选择(点击)具有collectionView(_:didSelectItemAt:)的集合视图单元作为参数,就会调用此方法。您可以在该方法中更新变量。只需记住在IndexPath上使用deselectItem(at:)方法处理点击后取消选择单元格。

答案 1 :(得分:0)

您需要实现UICollectionView委托。它就像这样

在索引路径中选择项目将给出所选单元格的索引路径。使用索引路径或您正在使用的数据源数组的任何其他属性,您可以修改变量值。

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    if let cell = collectionView.cellForItemAtIndexPath(indexPath) {
         //check your condition and modify the variable value depending on index path or any other property you are referring to.
    }
}