自定义UITableViewCell上的奇怪突出显示

时间:2011-08-19 02:51:43

标签: cocoa-touch uitableview

我有自己的UITableViewCell子类,我想在用户按下单元格时自定义。

所以,我尝试重写以下方法:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    if (highlighted)
    {
        [self setBackgroundColor:[UIColor orangeColor]];
        [self.optionLabel setTextColor:[UIColor whiteColor]];
    }
    else
    {
        [self setBackgroundColor:[UIColor clearColor]];
        [self.optionLabel setTextColor:[UIColor orangeColor]];
    }

    [super setHighlighted:highlighted animated:animated];
}

如果按住单元格,这可以正常工作。但是,如果我快速点击该单元格,我的UITableView会抓住委托回调tableView:didSelectRowAtIndexPath:,您无法看到我上面的任何代码生效。

有谁知道我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

那么,您可以在选择单元格而不是突出显示单元格时处理。类似的东西:

    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
        [super setHighlighted:highlighted animated:animated];
        [self updateCell];
    }

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

    - (void)updateCell {
        if (self.highlighted || self.selected) {
            [self setBackgroundColor:[UIColor orangeColor]];
            [self.optionLabel setTextColor:[UIColor whiteColor]];
        } else {
            [self setBackgroundColor:[UIColor clearColor]];
            [self.optionLabel setTextColor:[UIColor orangeColor]];
        }
    }