2011-04-21 9 views
5

Estoy trabajando en una aplicación que carga las publicaciones del usuario en Facebook. Toda esta información se pone en una vista de tabla. Las celdas son prescindibles cuando lo tocas. Por ahora solo hay texto en él. Calculo la altura del texto para saber qué tan alta debe ser la celda cuando se expande.Altura de celda dinámica basada en el contenido ios

Problema que tengo es que tiene que haber más que solo texto en él. Si el usuario publica un video en Facebook, el video también se insertará en la celda. Pero dado que la altura se calcula en función del texto, no deja espacio para el video incrustado. Puedo agregar un margen en la celda, pero este margen se aplicará a toda la celda en ese momento.

Este es el código que estoy usando en este momento:

//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; 
} 

Así que lo que necesito saber. ¿Cómo puedo calcular la altura de la celda en función de todo el contenido? y no solo el texto

Sería genial si alguien puede ayudar con esto!

Thnx de antemano

+0

En realidad ... era bastante simple. sólo tenía que añadir lo siguiente en heightForRowAtIndexPath NSString * video = [fbSource objectAtIndex: indexPath.row]; if (video! = @ "Empty") { return labelSize.height + 136; } return labelSize.height + 36; – Jos

+2

Debe publicar eso como una respuesta y luego aceptarlo, por lo que esta pregunta ya no aparece como sin respuesta. – Anomie

+0

sí, eso aún no era posible. Necesitaba esperar 8 horas, ¡pero lo hice ahora! – Jos

Respuesta

3

realidad .. era bastante simple. Solo tuve que agregar lo siguiente en heightForRowAtIndexPath

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