Iphone UITableViewCell在调用reloadSections:withRowAnimation后显示高亮显示的状态:

Iphone UITableViewCell在调用reloadSections:withRowAnimation后显示高亮显示的状态:,iphone,ios,cocoa-touch,uitableview,Iphone,Ios,Cocoa Touch,Uitableview,我有一个包含很多部分的UITableView。每个部分的顶部都有一个可选择的单元格(带您进入详细信息屏幕),后面有n行无需选择,最后有一行可按以展开/折叠中间行。一切正常,管理行数的逻辑和使用UITableViewRowAnimationFade的reloadSections:withRowAnimation:method的展开/折叠功能,但我的问题是,最后一行按展开/折叠,会使第一行高亮显示。这种情况并非总是发生,只是有时会发生,但这毫无意义,因为我根本没有碰第一排 我必须说,我正在使用自定义

我有一个包含很多部分的UITableView。每个部分的顶部都有一个可选择的单元格(带您进入详细信息屏幕),后面有n行无需选择,最后有一行可按以展开/折叠中间行。一切正常,管理行数的逻辑和使用UITableViewRowAnimationFade的reloadSections:withRowAnimation:method的展开/折叠功能,但我的问题是,最后一行按展开/折叠,会使第一行高亮显示。这种情况并非总是发生,只是有时会发生,但这毫无意义,因为我根本没有碰第一排


我必须说,我正在使用自定义背景视图和单元格的selectedBackgroundView。如果没有最后一个(保留默认的蓝色selectedBackgroundView),问题就消失了。

这听起来像是重用标识符的问题。如果某个单元格被重用,它有时可能是以前选定的单元格。当显示的行将底部行(您按下的那一行)移出您的视图时,是否会发生这种情况

无论如何,解决方案应该是在插入其他行之前取消选择底部行


希望这能有所帮助……

是的,我认为这一定与细胞重用有关。最下面一行永远不会移出视图,但它可以。另外,我在tableView:didSelectRowAtIndexPath:中所做的第一件事是为该行调用deceloseRowatindexpath:animated:,因此这并不能解决问题。我得说我正在使用一个自定义的手机背景视图。没有它,问题就没有了。我也要更新这个问题来说明这一点。是否在
cellforrowatinexpath:
中将单元格设置为未选中?我不确定它是否会干扰任何东西,但它可能会有所帮助…不是在cellForRow中,而是在Interface Builder中。第一行有默认选择,中间行没有,最后一行也有默认选择。当您按下第一个按钮时,应用程序将带您进入新屏幕(典型行为)。按最后一个按钮时,应用程序将展开/折叠中间的行。最后一个按钮正确显示其典型的选定/未选定行为,但有时,当您按下最后一个按钮时,第一个按钮也会显示其选定状态。这是我需要解决的问题。只是检查一下:这些单元格是否有不同的重用标识符?是的,每种类型的单元格(第一行、中间行和最后一行)都有不同的重用标识符(它们也有不同的外观和行为)。