Ios 自定义UITableViewCell的选择行为

Ios 自定义UITableViewCell的选择行为,ios,uitableview,Ios,Uitableview,当用户在UITableView中选择一行时,我正在实现自定义视觉效果。我已经重写了UITableViewCell.setSelected(),但我在我的子类中调用了它,它在将selectedBackgroundView添加到层次结构之前对内容视图的外观进行了一些调整,比如将不透明度设置为false。我不希望内容视图和它的子视图被删除!不透明,因此我认为在重写它时可以避免调用super.setSelected,但这样会破坏选择/取消选择行为 有没有一种方法可以避免对UITableViewCell

当用户在
UITableView
中选择一行时,我正在实现自定义视觉效果。我已经重写了
UITableViewCell.setSelected()
,但我在我的子类中调用了它,它在将
selectedBackgroundView
添加到层次结构之前对内容视图的外观进行了一些调整,比如将不透明度设置为false。我不希望内容视图和它的子视图被删除!不透明,因此我认为在重写它时可以避免调用
super.setSelected
,但这样会破坏选择/取消选择行为

  • 有没有一种方法可以避免对
    UITableViewCell.setSelected()
    进行默认的
    UI
    更改,而不中断单元格
    选择/取消选择
    ?令我惊讶的是,
    选择/取消选择
    单元格的内置UI更改与逻辑/状态跟踪如此紧密地交织在一起,使得
    选择/取消选择
    setSelected()

  • 更一般地说,在调用诸如
    UITableViewCell.setSelected()
    之类的东西时,是否有任何调试提示或跟踪可以用来查看视图的更新情况,以便在不调用基类方法的情况下对其进行模拟(我知道这可能会与新版本的iOS相冲突)

谢谢,


Neal

您可以尝试使用高亮显示方法,而不是使用单元格选择方法

步骤1:将表格视图单元格选择设置为无

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
步骤2:覆盖单元格的设置高亮显示方法以自定义单元格选择

 - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
    {
          if (highlighted) 
          {
          }
          else
          {
          }
    }

谢谢你提供的信息!这似乎是可行的,但有一些警告。根据我的实验,当选择单元格时,setHighlighted会被调用两次:第一个参数为“true”,第二个参数为“false”。因此,setHighlighted提供的突出显示并不是针对选定单元格的最终UI状态,而是针对“途中”到选定单元格的UI效果。关于选择样式的提示已经为我删除了不需要的不透明度调整-谢谢!我会接受答案的。