0

我遇到了一个问题,其中 cellForRowAtIndexPath 返回错误的单元格,因此,它在错误的单元格上执行其他操作。

我已经构建了很大的自定义单元格,因为我正在安装一些 UIImageViews(+文本 +按钮),所以一个单元格占据了整个屏幕。当您向下滚动并且两个单元格同时在屏幕上时,如果您点击顶部的单元格,它会转到底部单元格的内容(单元格内的按钮操作相同)。

我认为这可能是 IB 特有的,所以我用代码重建了所有内容,但仍然有相同的行为。

有什么办法可以解决这个问题并保持正确的 indexPaths 吗?

4

1 回答 1

2

我认为你的观点是错误的。cellForRowAtIndexPath 不会返回错误的单元格。它应该只返回一个新的单元格,如果您使用 dequeueReusableCellWithIdentifier 或类似的,它可能已被回收。在这种情况下,dequeueReusableCellWithIdentifier 将返回任何可能刚刚从顶部滚动的旧单元格。您的工作是获取新单元格(可能是新单元格或回收的单元格)并将正确的值填充到其中的 cellForRowAtIndexPath 中。然后它返回的单元格将是“正确”的单元格,因为您刚刚向它写入了所有正确的值。因此,我会查看您对 cellForRowAtIndexPath 的实现,以确保将您传递的索引路径的正确值填充到 cellForRowAtIndexPath 返回的单元格中。

于 2012-12-30T06:50:27.687 回答