0

我有一个UITableViewCell按预期工作的习惯。除了一个(重要的)细节。

我的单元格(从 Nib 加载)包含一个UIButton(设置为自定义)。该按钮就像一个复选框。大多数情况下,使用自定义图像选择(=选中)复选框:

[self.checkboxButton setImage:[UIImage imageNamed:@"check_off"] forState:UIControlStateNormal];
[self.checkboxButton setImage:[UIImage imageNamed:@"check_on"] forState:UIControlStateSelected];

问题是:
当我选择我的行时,复选框(按钮)会自动取消选择。我一直在查看我的代码以查看它的来源,除了在我的自定义 tableviewcell 代码中之外,不要在任何地方的复选框上设置 selected 属性。

有趣的部分是:
当我设置我tableviewcell.selectionstyleUITableViewCellSelectionStyleNone一切都按预期工作(没有自定义背景颜色)。当我切换到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> 我已经没有办法解决这个虚幻的错误了。

谢谢。

4

1 回答 1

0

看来您取消选中tableView:didSelectRowAtIndexPath:方法中的复选框。

于 2012-09-12T09:16:34.597 回答