2012-02-08 6 views
1

Эта проблема сводит меня с ума.UITableViewCell subview не отображается до перерисовывания

У меня есть прототип UITableViewCell в моей раскадровке. Он содержит кучу подзаголовков. Одно из подзаголовков, UILabel, является неправильным.

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

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

Так что кажется, что метка есть, и она получает строку, которую я назначаю ей в методе cellForRowAtIndexPath. По какой-то причине это просто не получается. Я пробовал вставлять сообщения setNeedsDisplay в разных местах, но это не помогло.

Также странно, что я использую тот же подкласс UITableViewCell с дублированной иерархией представлений в раскадровке в другом контроллере представления, и там у меня нет никаких проблем.

У кого-нибудь есть представление о том, как я могу начать разгадывать эту тайну?

Спасибо!

+0

Вы изменяете ячейку таблицы или любое из подзонов после ее инициализации в таблицеView: cellForRowAtIndexPath? –

+0

Я. Я устанавливаю текст метки и делаю некоторые другие вещи с другими пользовательскими подклассами UIView. Все это прекрасно работает. Это просто UILabel, который не нарисован. – CharlieMezak

+0

У меня с тобой что-то похожее. В одной конкретной ячейке одна метка не нарисована. Если я нарушаю код, ячейка выглядит абсолютно нормально. Если я нахожу setNeedsDisplay, он появляется. Сводит меня с ума! – jasongregori

ответ

1

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

+0

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

+0

Единственное, что я мог подумать, это то, что представление ярлыка не добавляется как подвью, иначе вы можете опубликовать свой код cellForRowAtIndexPath. –

Смежные вопросы