Получите свойства ячейки табличного представления в методе UITableViewDelegate heightForRowAtIndexPath: - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть табличное представление с настраиваемыми ячейками табличного представления. Их высота зависит от количества текста, который появится в ячейке. Вот мой код для метода UITableViewDelegate heightForRowAtIndexPath:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger row = [indexPath row];

    NSDictionary *factor = [self.factorsArray objectAtIndex:row];

    CGSize maximumLabelSize = CGSizeMake(260, kMaximumFactorLabelHeight);
    CGSize labelSize = [[factor objectForKey:@"text"] sizeWithFont:[UIFont fontWithName:@"Arial-BoldMT" size:14.0]
                                 constrainedToSize:maximumLabelSize
                                     lineBreakMode:UILineBreakModeWordWrap];

    return (labelSize.height + 72);
}

Этот код работает отлично. Моя проблема в том, что здесь есть ряд вещей, которые жестко запрограммированы:

  • ширина метки в ячейке табличного представления
  • название шрифта
  • размер шрифта
  • "72" - это дополнительная высота, которая должна быть добавлена ​​к ячейке в дополнение к высоте метки.

Я могу получить всю эту информацию из xib-файла, содержащего ячейку пользовательского табличного представления. Но как мне получить его в heightForRowAtIndexPath :? Я попытался - (UITableViewCell *) cellForRowAtIndexPath: (NSIndexPath *) indexPath, но я получил сбой, я считаю, потому что ячейка еще не существует, когда вызывается метод heightForRowAtIndexPath.

1 Ответ

2 голосов
/ 20 февраля 2012

Есть несколько способов сделать это. У меня обычно был метод класса в подклассе UITableViewCell, который возвращает высоту на основе переданного содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...