Вам, вероятно, следует взглянуть на другие примеры того, как работают таблицы, чтобы увидеть, как в них поступают данные.
Однако, когда вы будете готовы, вот примерный план того, как вы делаете ячейки переменной высоты:
1) Пусть heightForRowAtIndexPath возвращает собственную высоту для каждой строки
2) В этом методе определите, каким будет текст строки, затем используйте метод:
- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode
(На NSString, в UIStringDrawingAdditions), чтобы выяснить, какую высоту возвращать (вам нужна высота текста плюс некоторые отступы). Ширина - это ширина метки, которая будет содержать текст, возвращенный CGSize содержит высоту, которой будет метка при использовании этого текста.
3) В вашей ячейке вы должны установить количество строк равным 0, чтобы оно могло заполнить столько, сколько нужно.
4) Если вы используете настраиваемую ячейку, вам нужно убедиться, что высота метки изменяется в соответствии с помещаемым вами текстом - высота ячейки уже будет установлена на основе метода heightForRowAtIndexPath. Я думаю, что обычный UITableViewCell, вероятно, будет иметь текстовые метки с изменением размера по высоте вместе с ячейкой, если нет необходимости изменять их тоже.
5) Установите текст, который вы используете на этикетке, и наслаждайтесь.
Ключ к пониманию состоит в том, что вам действительно нужна высота дважды: один раз в heightForRow (который контролирует высоту ячейки), а затем снова, когда вы фактически настраиваете текст в ячейке (чтобы убедиться, что метка имеет правильный размер) .