我已经从代码中设置了自定义UITableViewCell。在我的单元格中,我有一个“UITableViewCellAccessoryDisclosureIndicator”。突出显示单元格时,它变为蓝色,附件项目变为白色。这一切都很好。
但是,点击并按下新视图时,附件项目会消失。当我回到tableview时,UITableViewCellAccessoryDisclosureIndicator消失了,在同一个单元格上点击/按住手指将不会再次突出显示它。
上周它运作良好,但我根本无法弄清楚突然出现这个问题的原因。当我做'hg diff'时,我看不到任何东西,所以希望有人能指导我找到一个可能的解决方案。如果您需要特定代码,请告诉我。
我使用过atebits Fast Scrolling示例代码并用它做了很多自定义,但基础知识(以及突出显示的BOOL)保持不变。
PS。在我的代码中,我还注意到,当推送新视图时,UITableViewCell不会保持突出显示。我注意到Apple自己的示例代码,当按下新视图时,单元格会突出显示,然后返回到tableview,单元格将一直保持突出显示,直到tableview被推回原位。这里有什么想法? THX。
答案 0 :(得分:1)
我只是为自己解决了这个问题(这个A.M.)
为了争论,请尝试从单元格中删除LayoutSubviews方法。我发现这会对配件视图造成严重破坏。我最终从我的单元格中删除了该方法,并将元素放在初始化方法中。
答案 1 :(得分:0)
我不确定您所指的快速滚动代码是什么,但是表视图单元应该通过视图控制器的按下和弹出保持突出显示,只有在弹出下一个控制器后立即取消选择。换句话说,事件的顺序应该是:
如果没有发生这种情况,您可能正在调用UITableView方法deselectRowAtIndexPath:animated:
- 这是负责以编程方式取消选择表视图中的单元格的方法。确保您的代码中没有对该方法的任何额外调用。
关于丢失公开指示符,请确保在视图控制器的推送或弹出期间表视图的数据源不会更改。如果数据源更改为其生成的单元格中不包含UITableViewCellAccessoryDisclosureIndicator的另一个对象,则在通过按下/弹出视图刷新表时,即使该单元格突出显示,也不会看到它。 (显示表格可能在诊断上有益,等待一会儿,然后拨打[tableView reloadData]
并查看您的辅助指示符是否消失。)
答案 2 :(得分:0)
如果你覆盖" layoutSubviews"你需要打电话
[super layoutSubviews];
在自定义布局之前。