我遇到了一个问题,即cellForRowAtIndexPath返回了错误的单元格,因此,它正在错误的单元格上进行其他操作。
我已经构建了相当大的自定义单元格,因为我正在使用一些UIImageViews(+ text + buttons),因此单元格会占据整个屏幕。当您向下滚动并且同时在屏幕上有两个单元格时,如果您点击顶部单元格,它将分割为底部单元格的内容(对于单元格内的按钮操作相同)。
我认为这可能是IB特有的,所以我在代码中重建了所有东西,但我仍然有相同的行为。
有没有办法解决这个问题并维护正确的indexPaths?
答案 0 :(得分:2)
我认为你的观点有误。 cellForRowAtIndexPath不会返回错误的单元格。它应该只返回一个新的单元格,如果你使用dequeueReusableCellWithIdentifier或类似的东西,它可能已被回收。在这种情况下,dequeueReusableCellWithIdentifier将返回任何可能刚刚从顶部滚动的旧单元格。你的工作是把新鲜的细胞(可能是一个新的细胞或一个可回收的细胞)并在其中填充正确的值,在cellForRowAtIndexPath中。然后它返回的单元格将是“正确的”单元格,因为您刚刚将所有正确的值写入其中。所以我会看看你的cellForRowAtIndexPath的实现,以确保你传递的索引路径的正确值被填充到cellForRowAtIndexPath返回的单元格中。