UITableView с динамической высотой ячейки
Просто быстрый вопрос. Существует ли простой способ динамической установки высоты ячейки в зависимости от текста, который содержится в ячейках? Сценарий: сгруппированное табличное представление с двумя разделами. Разделы один и два содержат текст из базы данных (с различной длиной текста).
Я изучил некоторые учебные пособия и фрагменты кода, но, похоже, ничто не поможет мне (или я слишком толстый, чтобы понять это правильно).
Я был бы признателен за некоторые советы или ссылку на учебник или даже лучше некоторые идеи кодирования!
благодарю вас!
1 ответ
Хорошо, вот ответ: (ну, еще не завершено), у меня есть проблема с ним, и был бы признателен за некоторую помощь, так как это сводит меня с ума! (Я получаю ПРЕДУПРЕЖДЕНИЕ: управление достигает конца не пустой функции)
Может кто-нибудь помочь здесь?
вот код!
#pragma mark -
#pragma mark UITableViewDelegate methods
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self newOrReusableCell];
if (indexPath.section == A_SECTION) {
NSUInteger row = indexPath.row;
NSString *text = [_centerArray objectAtIndex:row];
UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;
CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
UIFont* font = cell.textLabel.font;
CGSize size = [text sizeWithFont:font
constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
lineBreakMode:lineBreakMode];
if (size.height > kMaxLabelHeight) {
size.height = kMaxLabelHeight;
}
return size.height + kTableCellVPadding*2;
}
if (indexPath.section == B_SECTION) {
NSUInteger row = indexPath.row;
NSString *text = [_leftArray objectAtIndex:row];
UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;
CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
UIFont* font = cell.textLabel.font;
CGSize size = [text sizeWithFont:font
constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
lineBreakMode:lineBreakMode];
if (size.height > kMaxLabelHeight) {
size.height = kMaxLabelHeight;
}
return size.height + kTableCellVPadding*2;
}
}//i get the WARNING here!!