0

我调用cellForItemAtIndexPath:didSelectItemAtIndexPath:方法。结果是didSelectItemAtIndexPath:每个单元只调用一次。所以我可以第一次点击一个单元格,然后我可以点击另一个单元格,但是如果我再次点击第一个单元格,didSelectItemAtIndexPath则不再调用(但所有其他“新”单元格)。

现在我不再打电话cellForItemAtIndexPath:了,现在didSelectItemAtIndexPath:按预期工作。但是为什么我不允许这样做呢?这有什么原因吗?

4

1 回答 1

1

集合视图正在为您缓存单元格的实例,当您在索引路径上创建单元格时,您可以将它们出列。集合视图正在对您执行此操作时发生的情况做出一些假设,因此,如果您开始对同一索引路径中的单元格发出多个请求,就会发生奇怪的事情。有时这会导致视觉问题,有时会导致交互问题。

如果您想在指定的索引路径获取单元格,您应该直接询问集合视图而不是使用您自己的委托方法,这将为您提供屏幕上现有的单元格而不是新的单元格。

于 2016-02-11T09:37:04.000 回答