detailTextLabel не отображается изначально - PullRequest
6 голосов
/ 30 марта 2012

Я использую статический UITableview, настроенный в раскадровке.Для некоторых ячеек (Стиль = Правая деталь) я установил detailTextlabel.text в viewWillAppear следующим образом:

   self.recentProductsCell.detailTextLabel.text = description;

Для этой ячейки метка не отображается.Если я NSLog текст, он показывает, что все в порядке.Я проверил, что detailTextLabel не скрыт.Я не изменил никаких других свойств в раскадровке.В ячейке есть аксессуар detailDisclosure, но его установка на что-то другое не помогла.

Тогда странная вещь: если я запускаю и detailTextlabel не показывает, я выбираю строку, нажав на нее и двигая пальцем,С тех пор detailTextLabel показывает!Даже при скрытии и повторном отображении видимость этикетки остается видимой.Сброс и установка его в коде, однако, заставляет метку снова исчезнуть.

Могу ли я сделать что-то не так, или это ошибка?

Отредактировано: проверено в 5.0 и 5.1, одинаковое поведение.Я нашел уродливый обходной путь, выбрав и отменив выбор этой строки в коде в viewWillAppear.Поэтому я добавил:

[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:3 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];
[self.tableView deselectRowAtIndexPath: [NSIndexPath indexPathForRow:3 inSection:0] animated:NO];

Это работает, но я вижу, что строка выбирается и отменяется.Поэтому я также изменил selectionStyle, но теперь эта строка мигает при отображении представления.

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

Ответы [ 7 ]

9 голосов
/ 03 апреля 2012

Я нашел, когда detailLabel не появился, не почему, ИМХО, это ошибка.

Если предыдущее значение для detailLabel.Text было ноль или пустая строка, detailLabel не отображается после установки его в новое значение. Если я установлю detailLabel на что-то еще, кроме nil / empty (изначально), а затем установлю его на что-то другое, новое значение будет правильно отображено.

Причина не показа, вероятно, более сложна, чем просто пустота раньше, но в моем случае это решает мою проблему. Я, вероятно, могу показать detailLabel в цвете фона, если я хочу, чтобы он был «пустым».

5 голосов
/ 27 апреля 2012

У меня есть дубликат этой проблемы. Та же конфигурация - статические ячейки в раскадровке, но с левыми ячейками деталей. Я также вижу проблему, когда прикосновение к ячейке делает ее видимой.

Я решил эту проблему, установив начальное содержание метки детализации в раскадровке на один пробел. После установки фактического содержимого метки детали в коде, я отправляю сообщение sizeToFit метке детализации.

0 голосов
/ 06 сентября 2016

Я обнаружил, что в моем случае это происходит только на iPhone 6plus (8.4).

Решение 1 (Предложить):

После повторного использования ячейки проблема решена.*

Решение 2:

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

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    tableView.reloadData()
}
0 голосов
/ 19 марта 2015

У меня была такая же проблема, и я думаю, что это ошибка.Если я удерживаю нажатие на строку, я вижу detailTextLabel.

Как сказал Bjinse, обычно это происходит, если предварительно установить для detailTextLabel значение nil или "" (без пробела = пустая строка).1004 * Итак, я закончил установку detailTextLabel, который я хотел пустым в "" (с пробелом).Это сработало для меня.

0 голосов
/ 03 апреля 2012

Добавляете ли вы все элементы управления в contentView UITableViewCell?Если вы просто добавите его в ячейку, это иногда может привести к шаткому поведению.

0 голосов
/ 30 марта 2012

Вы устанавливаете метку не в том месте.

Разместите свой код UITableViewDelegate / DataSource.Вам нужно установить это значение в cellForRowAtIndexPath: или willDisplayCellAtIndexPath:

0 голосов
/ 30 марта 2012

Попробуйте установить ячейку Style = subtitle

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