在以编程方式创建的UICollectionView中未调用didDeselectItemAtIndexPath函数

时间:2016-07-22 12:43:46

标签: ios swift2 xcode7 uicollectionviewcell uicollectionviewdelegate

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

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

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

1 个答案:

答案 0 :(得分:0)

嗯,这两个函数都是根据符合它的对象中的UICollectionViewDelegate调用的。我强烈建议你检查这一点:

  1. 创建自定义collectionView后,请不要忘记将其设置为委托属性。
  2. 在委托对象中实现此方法。 -collectionView:didSelectItemAtIndexPath:-collectionView:didDeselectItemAtIndexPath:并将简单NSLog()输出或断点
  3. 放在那里
  4. 不要忘记将UICollectionView属性allowsSelection设置为YES
  5. 面对结果
  6. 重要提示
     1.如果您调用诸如-selectItemAtIndexPath:animated:scrollPosition:-deselectItemAtIndexPath:animated:之类的UICollectionView方法,则任何此操作都不会被触发,也不会收到通知。如您所记,与UITableViewClass相同  2. UICollectionView属性allowsMultiplySelection允许您在收集单元状态之间切换  3.创建元素的位置无关紧要。它只需要正确设置。

    希望这可以帮到你。