2013-07-06 7 views
0

Уместно ли звонить [tableView beginUpdates] и [tableView endUpdates] в cellforRowAtIndexPath?Динамическая высота UITableViewCell данные неправильный заказ

Я пытаюсь динамически расширять высоту ячеек на основе содержимого внутри ячейки. Когда я использую [tableView beginUpates] и [tableView endUpdates] в cellForRowAtIndexPath, вывод выглядит нормально. Однако, как только я начну прокрутку, данные в ячейках упорядочиваются некорректно, и иногда разделитель столбцов между ячейками таблицы исчезает.

Должен ли я использовать [tableView beginUpdates] и [tableView endUpdates] для этого?

Спасибо!

ответ

0

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

Если ваши высоты получены из содержимого ячейки, рассмотрите подход прототипа, обозначенный here. Кроме того, если вы можете использовать стороннюю библиотеку, проверьте TLIndexPathTools. Он делает динамическую высоту ячейки бесплатно, если ваш пользовательский класс ячейки реализует прототип TLDynamicSizeView. Попробуйте запустить проект образца Dynamic Height.

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