проблема с таблицей 320 с пользовательскими ячейками (с разной высотой) - PullRequest
0 голосов
/ 14 августа 2011

У меня есть настроенная таблица, которая отображает некоторые данные JSON из Интернета.У меня есть разные типы элементов в моих данных, представленных в разных ячейках.По сути, я не делил подкласс для каждого типа ячеек, но я скорее делаю оператор switch / case в методах setObject / layoutSubviews / rowHeightForObject / etc.Теперь моя проблема заключается в том, что некоторые ячейки содержат UILabel, которая варьируется в зависимости от размера текста.Теперь я создаю метку каждый раз в методе rowHeightForObject и вычисляю ее размер, чтобы определить высоту для этой конкретной ячейки.Есть ли более эффективный способ сделать это?

1 Ответ

0 голосов
/ 15 августа 2011

Вы можете использовать ячейку TTStyledTextTableCell.Хороший пример этого есть в примере проекта TTTwitter.TTStyledTextTableCell принимает элемент ячейки с TTStyledText и автоматически регулирует высоту ячейки.

Если вы используете пользовательский класс ячеек, вам нужно добавить функцию высоты в свой класс ячеек и использовать TTStyledText вместо UILabel.

///////////////////////////////////////////////////////////////////////////////////////////////////
+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object {
  TTStyledText* text = object;
  if (!text.font) {
    text.font = TTSTYLEVAR(font);
  }
  text.width = tableView.width - [tableView tableCellMargin]*2;
  return text.height;
}

Функция вычисляет высоту класса TTStyledText для каждой ячейки в источнике данных таблицы.

...