У меня есть табличное представление с настраиваемыми ячейками табличного представления. Их высота зависит от количества текста, который появится в ячейке. Вот мой код для метода 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.