0

我已经以编程方式创建了UICollectionView。它的单元格还包含以编程方式创建的UILabel,UIView和UIImageView。包含此集合视图的视图也是以编程方式创建的。我已将其数据源和委托设置为自我。标签,视图和图像视图的userInteractionEnabled属性也被设置为false。 collection视图的allowsMultipleSelection属性也设置为true。didDeselectItemAtIndexPath函数未以编程方式创建UICollectionView

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

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

+0

你有没有任何水龙头手势?看看这里http://stackoverflow.com/questions/16444688/uicollectionview-only-calling-didselectitematindexpath-if-user-double-taps-will –

+0

感谢您的意见和答案。我发现了我非常非常愚蠢的错误。我在我的didselect函数中重新加载了我的集合视图。希望别人不要在这个错误上花费数小时。 – Rishi

回答

0

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

您的自定义的CollectionView不要忘记
  1. 创建之后进行设置委托财产。
  2. 在委托对象中实现此方法。 -collectionView:didSelectItemAtIndexPath:-collectionView:didDeselectItemAtIndexPath:,并把有简单NSLog()输出或断点
  3. 不要忘记UICollectionView财产allowsSelection设立YES
  4. 面对结果

重要事项
1.如果调用UICollectionView像-selectItemAtIndexPath:animated:scrollPosition:-deselectItemAtIndexPath:animated:这样的任何方法将不会触发,也不会收到通知。正如你所记得的,与UITableViewClass相同
2. UICollectionView属性allowsMultiplySelection允许你在收集单元状态之间切换
3.你创建元素的位置并不重要。它只需要正确设置。

希望这可以帮助你。