cell.accessoryType消失的问题

时间:2009-07-13 15:30:58

标签: iphone uitableview

我已经从代码中设置了自定义UITableViewCell。在我的单元格中,我有一个“UITableViewCellAccessoryDisclosureIndicator”。突出显示单元格时,它变为蓝色,附件项目变为白色。这一切都很好。

但是,点击并按下新视图时,附件项目会消失。当我回到tableview时,UITableViewCellAccessoryDisclosureIndicator消失了,在同一个单元格上点击/按住手指将不会再次突出显示它。

上周它运作良好,但我根本无法弄清楚突然出现这个问题的原因。当我做'hg diff'时,我看不到任何东西,所以希望有人能指导我找到一个可能的解决方案。如果您需要特定代码,请告诉我。

我使用过atebits Fast Scrolling示例代码并用它做了很多自定义,但基础知识(以及突出显示的BOOL)保持不变。

PS。在我的代码中,我还注意到,当推送新视图时,UITableViewCell不会保持突出显示。我注意到Apple自己的示例代码,当按下新视图时,单元格会突出显示,然后返回到tableview,单元格将一直保持突出显示,直到tableview被推回原位。这里有什么想法? THX。

3 个答案:

答案 0 :(得分:1)

我只是为自己解决了这个问题(这个A.M.)

为了争论,请尝试从单元格中删除LayoutSubviews方法。我发现这会对配件视图造成严重破坏。我最终从我的单元格中删除了该方法,并将元素放在初始化方法中。

答案 1 :(得分:0)

我不确定您所指的快速滚动代码是什么,但是表视图单元应该通过视图控制器的按下和弹出保持突出显示,只有在弹出下一个控制器后立即取消选择。换句话说,事件的顺序应该是:

  1. 在表格查看单元格上接收触摸事件
  2. 单元格选择(突出显示蓝色)
  3. 按下新控制器
  4. 新控制器上的任何操作
  5. 弹出新控制器
  6. 单元格取消选择(从蓝色变为白色)
  7. 如果没有发生这种情况,您可能正在调用UITableView方法deselectRowAtIndexPath:animated: - 这是负责以编程方式取消选择表视图中的单元格的方法。确保您的代码中没有对该方法的任何额外调用。

    关于丢失公开指示符,请确保在视图控制器的推送或弹出期间表视图的数据源不会更改。如果数据源更改为其生成的单元格中不包含UITableViewCellAccessoryDisclosureIndicator的另一个对象,则在通过按下/弹出视图刷新表时,即使该单元格突出显示,也不会看到它。 (显示表格可能在诊断上有益,等待一会儿,然后拨打[tableView reloadData]并查看您的辅助指示符是否消失。)

答案 2 :(得分:0)

如果你覆盖" layoutSubviews"你需要打电话

[super layoutSubviews];

在自定义布局之前。