Динамическая высота ячейки на основе содержимого ios

#iphone #objective-c #ios #uitableview

#iPhone #objective-c #iOS #uitableview

Вопрос:

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

Проблема, с которой я сталкиваюсь, заключается в том, что в ней должно быть больше, чем просто текст. Если пользователь публикует видео на 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) amp;amp; (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. На самом деле.. это было довольно просто. Просто нужно было добавить следующее в heightForRowAtIndexPath NSString *video = [fbSource objectAtIndex:indexPath.row] ; if (video != @»empty») { return labelSize.height 136; } return labelSize.height 36;

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

3. да, это было еще невозможно. Мне нужно было подождать 8 часов, но я сделал это сейчас!

Ответ №1:

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

     NSString *video = [fbSource objectAtIndex:indexPath.row] ; 
    if (video != @"empty") { return labelSize.height   136; } 
    return labelSize.height   36;