Как изменить цвет текста UITableViewCell в выделенном состоянии? - PullRequest
4 голосов
/ 26 августа 2011
- (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 голосов
/ 26 августа 2011

UILabel s имеют свойство highlightedTextColor.Когда представление, подобное UITableViewCell, переходит в выделенное состояние, все подпредставления, включая ваш ярлык, должны автоматически изменяться для использования их выделенных свойств.Если он все еще не работает, есть поле для отключения этой функции, которое вы бы хотели проверить.

1 голос
/ 23 апреля 2013

Вы не хотите делать это ни в каких методах делегатов табличного представления.Вы должны установить выделенный цвет текста для UILabel, как указано

[myLabel setHighlightedTextColor:[UIColor whiteColor]];

Это будет работать.Вы не хотите работать даже с невыделенным состоянием.

Приветствия!

0 голосов
/ 26 августа 2011

Я бы использовал методы UITableViewDelegate для достижения этой цели.UILabel's может иметь установленные цвета, так почему бы не сделать что-нибудь, используйте didSelectRowAtIndex и didDeselectRowAtIndex.В didSelectRowAtIndex установите метку на нужный цвет, а затем в didDeselectRowAtIndex установите метку обратно на черный.

0 голосов
/ 26 августа 2011

Вы можете заменить метку на UIButton и воздействовать на событие touchDown?

Кнопки все еще имеют свойство titleLabel, поэтому они могут хорошо отображать текст, и вы сможете легче реагировать на прикосновения. Я не вижу большую часть вашего кода, поэтому не знаю, что вы делаете с этими ярлыками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...