选择单元格后,按钮的背景颜色将发生变化,然后进行记录

时间:2015-09-30 07:50:31

标签: ios uitableview

我有一个自定义 UITableViewCell 并且其中有一个按钮,当我将按钮的背景颜色设置为Default Color以外的某种颜色时([UIColor whiteColor] ),然后当选择单元格时,按钮的背景颜色将在单元格的选择突出显示消失时更改并恢复。

当选择单元格时,如何发生这种情况以及如何保持按钮的背景颜色?

2 个答案:

答案 0 :(得分:3)

我建议您检查您为表格视图单元格获取的视图层次结构。它可以轻松完成:在模拟器上运行您的应用程序 - >单击“调试视图层次结构”(参见附加的第1张图像) - >与检查员一起玩(参见附件中的第2张图片)。 enter image description here

enter image description here

更新:经过一段时间的挖掘后,我得到了以下内容(请参阅下面的3个屏幕截图,说明情况): enter image description here

enter image description here

enter image description here

正如您所看到的,内部调用会清除名为_setOpaque:forSubview:

的单元格子视图的背景颜色

话虽如此,如果您想确保按钮的背景颜色保持不变,您应该按照以下方式实现单元格的选择机制:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // here comes your custom color (it's assumed that myButton is a binded IBOutlet
    self.myButton.backgroundColor = [UIColor greenColor]; // or whatever else
}

UIKit是不仁慈的。希望这会对你有所帮助。

答案 1 :(得分:0)

我不知道恢复的意思。但是,您希望在使用- (void)layoutSubviews{}将按钮添加到单元格时添加目标操作。在这种情况下,self将是自定义表视图单元格。您希望在自定义tableViewCell类文件的.m中使用此代码。

          - (void) layoutSubviews {
              [self.button addTarget:self forAction:@selector(buttonPressedDown) forControlEvents:UIControlEventTouchedUpInside]
          }

    //Cell goes to this method once button has been pressed.
         - (void) buttonPressedDown{
              self.backgroundColor = [UIColor redColor];//Replace withwhatever color you want.
         }

然后,如果背景颜色已被更改,则可以编辑具有此if([self.backgroundColor isEqualTo:[UIColor redColor]])条件的buttonPressedDown,了解如何处理按钮按下。希望这有助于在细胞突出显示消失时提供有关恢复意义的更多信息。不确定你的意思。