我有一个自定义 UITableViewCell 并且其中有一个按钮,当我将按钮的背景颜色设置为Default Color
以外的某种颜色时([UIColor whiteColor]
),然后当选择单元格时,按钮的背景颜色将在单元格的选择突出显示消失时更改并恢复。
当选择单元格时,如何发生这种情况以及如何保持按钮的背景颜色?
答案 0 :(得分:3)
我建议您检查您为表格视图单元格获取的视图层次结构。它可以轻松完成:在模拟器上运行您的应用程序 - >单击“调试视图层次结构”(参见附加的第1张图像) - >与检查员一起玩(参见附件中的第2张图片)。
更新:经过一段时间的挖掘后,我得到了以下内容(请参阅下面的3个屏幕截图,说明情况):
正如您所看到的,内部调用会清除名为_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,了解如何处理按钮按下。希望这有助于在细胞突出显示消失时提供有关恢复意义的更多信息。不确定你的意思。