Обычно я делаю это, добавляя метод к своему подклассу NSObject, который будет действовать как мой объект источника данных (что входит в массив источника данных, если вы используете этот базовый подход).
например. Скажем, нам нужно отобразить кучу постов в блоге (чистый текст), каждый пост - это ячейка. Поскольку каждая строка будет иметь переменную высоту, я создаю подкласс NSObject, назовите его BlogPostInfo . В этом классе я добавляю метод:
- (int)cellHeight;
{
/* Perform a calculation with blog data, probably using sizeWithFont: */
}
Поскольку у вас есть этот метод в вашем объекте данных, вы можете использовать его в UITableViewController следующим образом:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
/* assuming blogPosts is an NSMutableArray or whatevs */
return [[blogPosts safeObjectAtIndex:indexPath.row] cellHeight];
}
Вот так я делаю динамические высоты ячеек таблицы.