UITableView с динамической высотой ячейки - PullRequest
0 голосов
/ 02 июля 2010

просто быстрый вопрос. Существует ли простой способ динамической установки высоты ячейки в зависимости от текста, который содержится в ячейках? Сценарий: сгруппированный табличный вид с двумя разделами. Разделы один и два содержат текст из базы данных (с разной длиной текста).

Я изучил некоторые учебные пособия и фрагменты кода, но мне, кажется, ничто не поможет (или я слишком толстый, чтобы понять это правильно).

Буду признателен за совет или ссылку на учебник, а еще лучше за идеи кодирования!

спасибо!

1 Ответ

3 голосов
/ 11 июля 2010

Хорошо, вот ответ: (ну, еще не завершено), у меня есть проблема с ним, и я был бы признателен за некоторую помощь, так как это сводит меня с ума!(Я получаю ПРЕДУПРЕЖДЕНИЕ: управление достигает конца не пустой функции)

Может кто-нибудь помочь здесь?

вот код!

#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!!
...