如何在UITableViewCell高亮状态下更改文本颜色?

4
- (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个回答

17

UILabel 具有 highlightedTextColor 属性。当像UITableViewCell这样的视图处于高亮状态时,包括您的标签在内的所有子视图都应自动更改为使用其高亮属性。如果仍然无法正常工作,则还有一个禁用该功能的字段要检查。


此外,您不需要编写上述代码来设置选定状态,因为它将成为UITableViewCell的默认行为的一部分。 - kris

1

你不想在任何tableview代理方法中执行此操作。你必须按照给定的方式将高亮文本颜色设置为UILabel。

[myLabel setHighlightedTextColor:[UIColor whiteColor]];

这将起作用。您甚至不需要处理未高亮状态。
干杯!

0
我会使用UITableViewDelegate方法来实现这个。UILabel可以设置颜色,所以为什么不在didSelectRowAtIndex和didDeselectRowAtIndex中做些事情呢?在didSelectRowAtIndex中,将标签设置为所需的颜色,然后在didDeselectRowAtIndex中将标签设置回黑色。

-1

你可以用UIButton替换标签,并在touchDown事件上进行操作吗?

按钮仍然具有titleLabel属性,因此它可以很好地显示文本,并且您将能够更轻松地处理触摸。不过我看不到你的代码,所以我不知道你对这些标签做了什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接