澄清UITableViewCell在突出显示事件上的未记录行为

Yet*_*osh 5 iphone uitableview ios

当单元格突出显示(用户触摸单元格)时,UITableViewCell会修改其contentView层次结构的内容.

我迄今发现的两个例子:

  • 将UIView放在单元格的contentView中,背景颜色.当表格单元格突出显示时,UIView的背景颜色被删除(它显然设置为具有清晰的背景.)
  • 将UIButton放在contentView中.单元格突出显示时,该按钮也会强制进入突出显示状态.

就好像UITableView单元格中有一些逻辑检查单元格层次结构中的所有视图,并根据一组神秘规则修改它们,然后在单元格未突出显示后将它们恢复正常.

任何人都可以解释UITableViewCell在我的自定义表格视图单元格的内容中修改(意外地和以未记录的方式)的内容和原因吗?

谢谢!

alb*_*amg 1

Apple 文档中记录了 UITableViewCell 的突出显示,如下所示:

\n\n
\n

突出显示会影响标签、图像和背景的外观。\n 当单元格的突出显示状态设置为“是”时,标签将以突出显示的文本颜色绘制(默认为白色)。默认值为 NO。如果通过此属性将突出显示状态设置为 YES,则不会以动画方式过渡到新状态外观。对于动画突出显示状态转换,请参阅 setHighlighted:animated: 方法。

\n\n

请注意,为了使突出显示正常工作,您必须使用 textLabel 和 detailTextLabel 属性获取单元格\xe2\x80\x99s\n 标签,并设置\n 每个标签\xe2\x80\x99shighlightTextColor\n 属性;对于图像,使用 imageView 属性获取 cell\xe2\x80\x99s\n 图像并\n 设置 UIImageView 对象\xe2\x80\x99s\n OutstandingImage 属性。

\n
\n\n

这里没有提到 UIButtons,但这篇文章是关于如何防止按钮在单元格进入突出显示状态时进入突出显示状态。

\n

  • 谢谢,尽管这只是部分文档 - 它没有讨论如何将任意 UIView backgroundColor 属性更改为清晰,因此这绝对是一个不完整的解释。我想把它改变的所有东西都变成答案。但是,您链接到的解决方案 - 通过覆盖 setHighlighted:animated: 和 setSelected:animated: 实现自定义突出显示/选择状态 - 确实允许我通过不在覆盖中调用 super 方法来完全防止混合/未记录的突出显示更改的发生并亲力亲为。 (2认同)