Динамическая высота ячейки в зависимости от содержимого ios - PullRequest
5 голосов
/ 21 апреля 2011

Я работаю над приложением, которое загружает сообщения пользователя на Facebook.Вся эта информация помещена в таблицу.Ячейки расходуются, когда вы нажимаете на нее.Пока в нем только текст.Я вычисляю высоту текста, чтобы знать, какова должна быть ячейка при раскрытии.

Проблема, с которой я столкнулся, заключается в том, что в ней должен быть не только текст.Если пользователь публикует видео на Facebook, оно также будет вставлено в ячейку.Но так как высота рассчитывается на основе текста, для встроенного видео места не остается.Я могу добавить поле в ячейку, но тогда это поле будет применено ко всей ячейке.

Это код, который я сейчас использую:

//Function executes everything within when a certain row in tapped/selected
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{    
    [self.tableView reloadData];
    [self stopLoading];
    if (selectedIndexPath == indexPath) 
    {         
        selectedIndexPath = nil;
    }
    else 
    {        
        selectedIndexPath = indexPath;
    }          
    [self.tableView deselectRowAtIndexPath : indexPath animated : YES];
    [tableView beginUpdates];
    [tableView endUpdates];
}

//Change heigth of the selected row
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if ((selectedIndexPath != nil) && (selectedIndexPath.row == indexPath.row)) 
    {
        labelSize = [[result2 objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:13.0] 
                                                                  constrainedToSize:CGSizeMake(220.0f, MAXFLOAT) 
                                                                lineBreakMode:UILineBreakModeWordWrap];
        return labelSize.height + 136;

    }
    return 68.0;
}  

Так что мне нужнознать.Как рассчитать высоту ячейки на основе всего содержимого?и не только текст.

Было бы здорово, если бы кто-то мог помочь с этим!

Заранее спасибо

1 Ответ

3 голосов
/ 22 апреля 2011

На самом деле .. это было довольно просто. Просто нужно было добавить следующее в heightForRowAtIndexPath

    NSString *video = [fbSource objectAtIndex:indexPath.row] ; 
    if (video != @"empty") { return labelSize.height + 136; } 
    return labelSize.height + 36;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...