Я работаю над проектом iOS 5 с раскадровками и, таким образом, использую прототипы динамических ячеек таблицы в IB. В одном из представлений у меня есть табличное представление с ячейками переменной высоты, с высотой ячейки, вычисленной из высоты содержимого.
tableView:heightForRowAtIndexPath:
возвращает правильные значения для всех ячеек при первом отображении представления таблицы. Все хорошо при прокрутке вниз для нескольких элементов, но затем что-то идет не так: фактические ячейки кажутся правильной высоты, включая их области касания, но их разделители отображаются в неправильных местах (внутри ячеек, а не между ними).
При измерении размещения разделителя создается впечатление, что повторное использование ячейки может быть как-то связано с этим. Разделители для первых трех ячеек отображаются правильно, но не для четвертой. heightForRowAtIndexPath:
возвращает правильную высоту для него (в данном случае 125 пикселей), и содержащиеся в нем подпредставления находятся на своих местах. Однако разделитель отображается только в 108 пикселях от предыдущего разделителя, помещая его в область ячейки высотой 125 пикселей.
Вот кикер: 108px - высота первой ячейки таблицы, теперь вне поля зрения и, вероятно, используется повторно. У меня нет определенных доказательств этого, но похоже, что табличное представление игнорирует heightForRowAtIndexPath:
для этих ячеек и просто отображает разделитель в соответствии с повторно используемой высотой ячейки.
Это не объясняет, почему куча более поздних, более коротких ячеек вообще не отображается как разделители. Но это все, что мне нужно.
Есть ли обходной путь, настройка IB или что-то еще, что может помочь?