如何在突出显示的状态下更改UITableViewCell文本颜色?

时间:2011-08-25 21:59:10

标签: iphone objective-c cocoa-touch uitableview

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

    // Configure the view for the selected state
    if (selected) {
        companyLabel.textColor = [UIColor whiteColor];
        priceLabel.textColor = [UIColor whiteColor];
        changeLabel.textColor = [UIColor whiteColor];
        symbolLabel.textColor = [UIColor whiteColor];
    }
    else
    {
        companyLabel.textColor = [UIColor blackColor];
        priceLabel.textColor = [UIColor blackColor];
        symbolLabel.textColor = [UIColor blackColor];

        if([changeLabel.text doubleValue] < 0)
        {
           changeLabel.textColor = [UIColor colorWithRed:239.0/255.0 green:16.0/255.0 blue:52.0/255.0 alpha:1.0];
        }
        else if([changeLabel.text doubleValue] > 0)
        {
           changeLabel.textColor = [UIColor colorWithRed:77.0/255.0 green:161.0/255.0 blue:0.0 alpha:1.0];
        }
    }

}

直到下一个视图被推入导航堆栈之后,我的文字才会变为白色。

我希望它变成白色,即使用户点击+持有一个单元格。

4 个答案:

答案 0 :(得分:17)

UILabel具有highlightedTextColor属性。当像UITableViewCell这样的视图进入突出显示状态时,所有子视图(包括您的标签)都应自动更改为使用其突出显示的属性。如果它仍然不起作用,那么还有一个用于禁用该功能的字段,您可能需要检查。

答案 1 :(得分:1)

您不希望在任何tableview委托方法中执行此操作。您必须将突出显示的文本颜色设置为给定的

的UILabel
[myLabel setHighlightedTextColor:[UIColor whiteColor]];

这会奏效。你也不想处理甚至没有突出的状态。

干杯!

答案 2 :(得分:0)

我将使用UITableViewDelegate方法来实现此目的。 UILabel可以设置颜色,所以为什么不使用didSelectRowAtIndex和didDeselectRowAtIndex。在didSelectRowAtIndex中,将标签设置为所需的颜色,然后在didDeselectRowAtIndex中将标签设置回黑色。

答案 3 :(得分:-1)

您可以使用UIButton替换标签并对touchDown事件进行操作吗?

Button仍然具有titleLabel属性,因此它可以显示文本,并且您将能够更轻松地操作触摸。我看不到你的代码,所以我不知道你在用这些标签做什么。