UITableView-didSelectRowAtIndexPath调用didSelectRowAtIndexPath时出现问题

时间:2013-01-01 14:40:16

标签: iphone uitableview

我有自定义单元格的UITableView,在我的自定义单元格中,我添加了UIImageUILabel ... 但是,当我在第1行中选择单元格并在其上删除UIImage时:[[cell.contentView viewWithTag:TAG_FOR_TOPIMAG]removeFromSuperview];但是,索引7处的单元格与单元格1相同。

1 个答案:

答案 0 :(得分:0)

表视图重用单元格(dequeueReusableCell ...) 因此,相同的单元格(视图)可用于表格中的多个索引 更改单元格的布局(添加/删除/修改子视图)后,每次在屏幕上显示时,此单元格(视图)都会显示为已修改 - 即使每次都表示不同的索引。

例如,在您的情况下,您可能在屏幕上同时显示最多6个单元格 因此,您修改了一些单元格(一旦您修改了它就显示为索引1),之后滚动表格,索引为1的单元格已从屏幕上消失,然后应显示索引为7的单元格(在滚动期间)。该表将使用用于显示索引1的行的相同单元格(完全相同的UITableViewCell对象) 但你已经删除了它的图像......

在使用表格时,您必须始终牢记这一点 在您的情况下,我建议您将图像视图的可见性设置为隐藏,并在每个tableView"cellForRowAtIndexPath:方法中恢复它(不在if (cell == nil)语句中 - 在它之后)。