我有一个UITableViewCell
按预期工作的习惯。除了一个(重要的)细节。
我的单元格(从 Nib 加载)包含一个UIButton
(设置为自定义)。该按钮就像一个复选框。大多数情况下,使用自定义图像选择(=选中)复选框:
[self.checkboxButton setImage:[UIImage imageNamed:@"check_off"] forState:UIControlStateNormal];
[self.checkboxButton setImage:[UIImage imageNamed:@"check_on"] forState:UIControlStateSelected];
问题是:
当我选择我的行时,复选框(按钮)会自动取消选择。我一直在查看我的代码以查看它的来源,除了在我的自定义 tableviewcell 代码中之外,不要在任何地方的复选框上设置 selected 属性。
有趣的部分是:
当我设置我tableviewcell.selectionstyle
的UITableViewCellSelectionStyleNone
一切都按预期工作(没有自定义背景颜色)。当我切换到UITableViewCellSelectionStyleGray
复选框时自动取消选中。
更新
当我覆盖setSelected:animated:
我的复选框时保持选中状态。
- (void) setSelected:(BOOL)selected animated:(BOOL)animated
{
// checkbox stays checked as expected
NSLog(@"set select with anim");
// when calling super setSelected:animated: checkbox gets unchecked
// [super setSelected:selected animated:animated];
}
有什么我缺少的机制吗?
例如,我是否必须覆盖setSelected:
, drawRect
, ...<br> 我已经没有办法解决这个虚幻的错误了。
谢谢。