如何在iOS中选择单元格时以编程方式更改原型单元格中的标签文本颜色和图像

时间:2014-03-09 14:29:13

标签: ios iphone uitableview

我面临一个奇怪的问题。我在Storyboard中有一个带有5个原型单元的tableview控制器。每个单元格都有一个标签和一个图像。我正在尝试以编程方式选择单元格时更改标签和图像的文本颜色,如下所示。

In cellForRowAtIndexPath method
{
     // Using tags I am getting labels from storyboard.

    label1 = (UILabel *)[cell.contentView viewWithTag:101];
    label2= (UILabel *)[cell.contentView viewWithTag:102];
    label3 = (UILabel *)[cell.contentView viewWithTag:103];
    label4 = (UILabel *)[cell.contentView viewWithTag:104];
    label5 = (UILabel *)[cell.contentView viewWithTag:105];


    label1.textColor =[UIColor blackColor];
    label2.textColor =[UIColor blackColor];
    label3.textColor =[UIColor blackColor];
    label4.textColor =[UIColor blackColor];
    label5.textColor =[UIColor blackColor];
}

在didSelectRowAtIndexPath方法

{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

label1 = (UILabel *)[cell.contentView viewWithTag:101];
label2 = (UILabel *)[cell.contentView viewWithTag:102];
label3 = (UILabel *)[cell.contentView viewWithTag:103];
label4 = (UILabel *)[cell.contentView viewWithTag:104];
label5 = (UILabel *)[cell.contentView viewWithTag:105];

此处我想在选中时将所选标签文字颜色更改为白色,否则应为黑色。我可以在选择时将文本颜色更改为白色,但如果选择其他单元格,则无法将文本颜色设置为黑色。

2 个答案:

答案 0 :(得分:2)

didDeselectRowAtIndexPath中,您可以将颜色更改为黑色。

使用UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 获得牢房。

答案 1 :(得分:1)

为什么不创建UITableViewCell子类并覆盖setSelected:animated:setHighlighted:animated:。在那里,您可以更新标签的颜色并轻松更改图像。 在这样的例子中:

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

    _label.textColor = (selected ? _selectedColor : _unselectedColor);

}

您可以更改您的细胞亚类使用身份检查器。 Changing class using Identity inspector