0

我以编程方式创建了一个 UICollectionView。它的单元格还包含以编程方式创建的 UILabel、UIView 和 UIImageView。包含此集合视图的视图也已以编程方式创建。我已经设置了它的数据源并委托给自己。标签、视图和图像视图的 userInteractionEnabled 属性也已设置为 false。集合视图的allowsMultipleSelection 属性也设置为true。

问题是每当我触摸单元格时都会调用 didSelectItemAtIndexPath 函数。但是 didDeselectItemAtIndexPath 函数永远不会被调用。我尝试根据需要将 cell.selected 属性设置为 true/false,但对我的问题没有帮助。

请帮忙!!我花了很多时间搜索它,但没有结果!感谢您的回复。

4

1 回答 1

0

好吧,这两个函数都是根据符合它的对象中的 UICollectionViewDelegate 调用的。我高度宣传您检查以下几点:

  1. 创建自定义 collectionView 后,不要忘记设置它的委托属性。
  2. 在您的委托对象中实现此方法。-collectionView:didSelectItemAtIndexPath:或者-collectionView:didDeselectItemAtIndexPath:并在那里放置简单的NSLog()输出或断点
  3. 不要忘记将 UICollectionView 属性设置allowsSelectionYES
  4. 面对结果

重要说明
1. 如果您调用 UICollectionView 之类的方法-selectItemAtIndexPath:animated:scrollPosition:-deselectItemAtIndexPath:animated:任何此操作都不会被触发,也不会收到通知。正如您所记得的,与 UITableViewClass 2 中的相同
。 UICollectionView 属性allowsMultiplySelection允许您在集合单元格状态之间切换
3. 在哪里创建元素并不重要。它只需要正确设置。

希望这可以帮助你。

于 2016-07-22T22:38:58.823 回答