UITableViewCell textLabel.text не отображается в одной строке - PullRequest
0 голосов
/ 15 марта 2012

У меня есть простое табличное представление, которое правильно выглядит, за исключением того, что textLabel в одной из строк выглядит как черная полоса, то есть как черный текст на черном фоне. Если я выберу эту строку, текст появится нормально. Но если я выберу другую строку, она снова исчезнет.

Я обнаружил, что заштрихованная строка была программно выбрана во время метода - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath.

Мой код выглядел примерно так:

cell.selectionStyle = UITableViewCellSelectionStyleBlue;

cell.textLabel.font = [UIFont systemFontOfSize:14];
cell.textLabel.text = @"some text";

if (self.selectedRow == indexPath.row) cell.selected = YES;

Я решил проблему, выбрав ячейку перед установкой selectionStyle, то есть переместив последнюю строку в верх.

Я уверен, что должно быть рациональное объяснение, но думал, что внесу свой вклад на тот случай, если кто-то еще столкнется с чем-то похожим.

1 Ответ

1 голос
/ 15 марта 2012

Во-первых, не играйте с выделением в cellForRowAtIndexPath, если вы не хотите получать сюрприз, подобный этому, свойство selected для ячейки может быть изменено вручную (ничто по указанию разработчиков не запрещает это делать) и вы сделаете это после вызова [tableView reloadData], если ячейка должна быть выбрана сразу после появления представления.

Во-вторых, если поместить последнюю строку из фрагмента, ячейка не будет отображаться как выбранная, в то время как isSelected будет ДА ​​- совсем не хорошо.

Третий и последний, ".text =" after ".selected =" - это то, что удаляет черный на черном артефакт, это не имеет никакого отношения к стилю выбора, который я считаю. Тем не менее, ячейка не будет отображаться как выбранная - и это действительно плохо.

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

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