У меня есть следующая настройка: UITableView с пользовательской реализацией UITableViewCell. В каждой ячейке у меня есть UILabel и UIButton. Когда таблица сначала отображается, в каждой из ячеек UILabel имеет количество строк, установленных в 1, и все ячейки имеют фиксированную высоту (60 пикселей в моем случае). Когда нажата кнопка в ячейке, количество строк в строке UILabel устанавливается равным 0, а перенос слов включается, эффективно расширяя ячейку таблицы.UITableView - динамическая высота ячейки, контролируемая самой ячейкой
Теперь проблема заключается в том, что только реализация UITableViewCell знает, расширена ли метка или нет, и, следовательно, какая должна быть высота ячейки. Однако файл владельца является источником данных таблицы.
Я не могу получить может возглавить, как это установить. Любые идеи приветствуются.
Update здесь выдержки из моего кода
В пользовательской реализации UITableViewCell:
- (float)requiredHeight
{
if(isFull)
{
CGSize labelSize = [LblTitle.text sizeWithFont: [LblContent font]
constrainedToSize: CGSizeMake(300.0f, 300.0f)
lineBreakMode: UILineBreakModeTailTruncation];
return 42.0f + labelSize.height;
}
else
{
return 60.0f;
}
}
В владельца файла (UITableViewDelegate):
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
OOCommentCell *cell = (OOCommentCell*)[tableView cellForRowAtIndexPath:indexPath];
return [cell requiredHeight];
}
Однако это приводит к статистически в бесконечный цикл или BAD_ACCESS_EXCEPTION.
Я использую UIWebView внутри UITableViewCell, поэтому он не может определить высоту при вызове heightForRowAtIndexPath. Что я делаю, я установил ячейку в качестве делегата для UIWebView и в методе webViewDidFinishLoad, который я называю [webView sizeToFit]; webView.hidden = НЕТ; [tableViewController setRowHeight: webView.bounds.size.height forRowId: id]; и в методе setRowHeight UITableViewController я вызываю эти два метода, которые вы указали: [tableView beginUpdates]; [tableView endUpdates]; и это работает. – asdfasdfads