Выбор цвета шрифта ячейки таблицы

У меня есть пользовательский UITableViewCell. В нем есть 3 пользовательских ярлыка с пользовательским текстом.

Когда я нажимаю на ячейку, я хочу, чтобы textColor всех этих ярлыков стал белым. так же, как поведение приложения электронной почты UITableViewCell.

Для этого я написал это в пользовательском классе ячеек.

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

    // Configure the view for the selected state

    if (self.selected) {
        _subjectLabel.textColor = [UIColor whiteColor];
        _messageLabel.textColor = [UIColor whiteColor];
        _usernameLabel.textColor = [UIColor whiteColor];
    }else {
        _subjectLabel.textColor = [UIColor blackColor];
        _messageLabel.textColor = [UIColor grayColor];
        _usernameLabel.textColor = [UIColor blackColor];
    }



}

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

typedef enum {
    UITableViewCellSelectionStyleNone,
    UITableViewCellSelectionStyleBlue,
    UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

Ответ 1

Установите ярлык highlightTextColor, и все это будет сделано для вас автоматически. Вам не нужно делать ничего особенного в setSelected вообще.

например.

_subjectLabel.highlightedTextColor = [UIColor whiteColor];

Ответ 2

Когда мы выберем любую ячейку метода UITableView, -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath, вызываемую немедленно, вы можете использовать это.