Разделители UITableView отображаются неправильно из-за повторного использования ячеек?

Я работаю над проектом iOS 5 с раскадровками и, таким образом, использую динамические прототипы ячеек таблицы в IB. . В одном из представлений у меня есть табличное представление с ячейками переменной высоты, при этом высота ячейки рассчитывается на основе высоты содержимого.

tableView:heightForRowAtIndexPath:возвращает правильные значения для всех ячеек при первом отображении табличного представления. Все хорошо при прокрутке вниз для нескольких элементов, но затем что-то идет не так: фактические ячейки кажутся правильной высоты, включая области касания, но их разделители отображаются в неправильных местах (внутри ячеек, а не между ними).

Судя по измерению размещения разделителя, похоже, что повторное использование ячеек может иметь к этому какое-то отношение. Разделители для первых трех ячеек отображаются правильно, а для четвертой нет. heightForRowAtIndexPath:возвращает для него правильную высоту (в данном случае 125 пикселей), а содержащиеся в нем подпредставления находятся на своих местах. Однако разделитель визуализируется только на расстоянии 108 пикселей от предыдущего разделителя, помещая его в область ячейки высотой 125 пикселей.

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

Это не объясняет, почему куча более поздних, более коротких ячеек вообще не визуализируются как разделители. Но это все, что мне нужно продолжать.

Есть ли обходной путь, настройка ИБ или что-то еще, что могло бы помочь?

7
задан JK Laiho 3 April 2012 в 19:15
поделиться