UITableViewCell textColor не изменится с userInteractionEnabled = NO - PullRequest
4 голосов
/ 17 октября 2011

Я пытаюсь просто изменить цвет моего UILabel, используя свойство textColor, и оно не будет работать, когда userInteraction отключено, это не имеет никакого смысла, в документации нет ничего, что упоминало бы об этом вообще,Но это то, что происходит, если я удаляю эту строку, цвет меняется, но я не хочу взаимодействия с пользователем.

UITableViewCellStyleValue1

Стиль для ячейки с меткой слева от ячейки с левойВыровненный и черный текст ;справа находится метка, которая имеет меньший синий текст и выровнена по правому краю.Приложение «Настройки» использует ячейки в этом стиле.Доступно в iOS 3.0 и более поздних версиях.

Обе метки имеют цвет серый , и они не изменят цвет.Вот мой код:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
    }

    //If I remove this line the color changes
    cell.userInteractionEnabled = NO;

    UIColor *blackColor = [UIColor blackColor];

    UILabel *mainLabel = cell.textLabel;
    UILabel *detailTextLabel = cell.detailTextLabel;
    mainLabel.backgroundColor = blackColor;
    detailTextLabel.backgroundColor = blackColor;

    //Trying to change color here but no effect
    mainLabel.textColor = [UIColor redColor];
    detailTextLabel.textColor = [UIColor whiteColor];

    UIView *backView = [[[UIView alloc] initWithFrame:cell.frame] autorelease];
    backView.backgroundColor = blackColor;
    cell.backgroundView = backView;

    mainLabel.text = @"Some text";

    return cell;
}

РЕДАКТИРОВАТЬ: Я только что понял, это связано с userInteractionEnabled = NO, когда удален текст, Цвет меняется, но я не хочу взаимодействия с пользователем, как я могу отключить этоно также изменить цвет ?, без необходимости создавать собственные UILabels и добавлять их к contentView.

Ответы [ 2 ]

10 голосов
/ 17 октября 2011

Хорошо, я знаю, как это исправить, но это НЕ имеет никакого смысла, проблема в следующем:

cell.userInteractionEnabled = NO;

Если удалить textColor, то странно то, что если яизменить пользовательское взаимодействие в конце после изменения textColor цвет меняется!

Это ошибка ?.Я надеюсь, что этот ответ поможет любому, кто попытается это выяснить, поскольку он вообще не имеет никакого смысла, и нет документации по этому поводу.

2 голосов
/ 31 августа 2013

Пожалуйста, проверьте мой ответ на похожий вопрос:

https://stackoverflow.com/a/18552074/921573

Установка свойства enabled в textLabels соответственно исправляет это:

cell.userInteractionEnabled = (indexPath.row % 2) == 0;
cell.textLabel.enabled = cell.isUserInteractionEnabled;
cell.detailTextLabel.enabled = cell.isUserInteractionEnabled;
...