我在cellForItemAtIndexPath:
方法中调用didSelectItemAtIndexPath:
。结果是didSelectItemAtIndexPath:
每个单元只调用一次。所以我可以第一次点击一个单元格,然后我可以点击另一个单元格,但是如果我再次点击第一个单元格,则不再调用didSelectItemAtIndexPath
(而是所有其他“新”单元格)。
现在我不再调用cellForItemAtIndexPath:
,现在didSelectItemAtIndexPath:
按预期工作。但为什么我不被允许这样做?有什么理由吗?
答案 0 :(得分:1)
集合视图为您缓存单元格实例,并在索引路径创建单元格时将它们出列。集合视图对你执行此操作时发生的事情做了一些假设,因此如果你开始在同一索引路径上对单元格发出多个请求,那么奇怪的事情就会开始发生。有时会导致视觉问题,有时会出现交互问题。
如果你想在指定的索引路径上获取单元格,你应该直接询问集合视图,而不是使用你自己的委托方法,这将为你提供屏幕上的现有单元格而不是新单元格。