我已经从代码中设置了自定义UITableViewCell。在我的牢房里,我有一个"UITableViewCellAccessoryDisclosureIndicator".突出显示单元格时,单元格变为蓝色,附件项变为白色。所以这一切都很好。
但是,当点击并按下新视图时,附件项将消失。当我返回到表视图时,UITableViewCellAccessoryDisclosureIndicator已经消失了,在同一个单元格上点击/按住手指不会再次突出显示它。
上周它工作得很好,但我就是想不出是什么突然引发了这个问题。当我做“hg diff”时,我看不到任何东西,所以希望有人能指导我找到一个可能的解决方案。如果您需要特定的代码,请让我知道。
我使用过atebits快速滚动示例代码,并对其进行了大量定制,但基本内容(以及突出显示的BOOL)保持不变。
PS。我注意到Apple自己的示例代码,当新视图被推入时,单元格将突出显示,返回到表视图时,单元格将保持突出显示,直到将表视图推回原位。这里有什么想法吗?谢谢。
发布于 2009-07-13 16:16:54
我刚刚自己解决了这个问题(今天上午)
为了便于讨论,请尝试从您的单元格中删除LayoutSubviews方法。我发现这会对附件视图造成严重破坏。我最终从我的单元格中删除了该方法,并在初始化方法中定位了元素。
发布于 2009-07-13 15:50:33
我不确定你所指的快速滚动代码是什么,但是表格视图单元格应该通过视图控制器的推送和弹出来保持突出显示,只有在下一个控制器弹出后才会立即取消选择。换句话说,事件的顺序应该是:
如果没有发生这种情况,您可能正在调用UITableView方法deselectRowAtIndexPath:animated: -这是负责以编程方式取消选择表视图中的单元格的方法。确保您的代码中没有对该方法的任何额外调用。
至于丢失disclousre指示符,请确保表视图的数据源在视图控制器的推送或弹出期间不会发生变化。如果数据源更改为在其生成的单元格中不包含UITableViewCellAccessoryDisclosureIndicator的另一个对象,则当您通过推入/弹出视图来刷新表格时,即使该单元格被突出显示,您也不会看到它。(显示该表,稍等片刻,然后调用[tableView reloadData],查看附件指示器是否消失,这可能有助于诊断。)
发布于 2014-06-05 15:36:48
如果重写"layoutSubviews“,则需要调用
[super layoutSubviews];在你的自定义布局之前。
https://stackoverflow.com/questions/1120173
复制相似问题