2009-01-12 7 views
6

Estoy tratando de mostrar una tabla llena de estados de Twitter (sí, esta es la asignación Stanford Presence 2), que son de tamaño variable. relativamente puedo determinar fácilmente la altura apropiada para mis filas con el código que se aproxima (de accompanying lecture 9):¿Cuál es la mejor manera de implementar una UITableCell multilínea de tamaño variable?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *) indexPath 
{ 
    NSString *text = ...; 
    UIFont *font = [UIFont systemFontOfSize:...]; 
    CGSize withinSize = CGSizeMake(tableView.width, 1000]; 
    CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeWordWrap]; 

    return size.height + somePadding; 
} 

He intentado dos enfoques (y algunos ajustes a la vez) para obtener un campo de palabras envoltura de varias líneas de texto en mi fila de la mesa.

  1. Añadir un UILabel como subvista a mi costumbre UITableCell subclase, y establezca la propiedad numberOfLines ya sea a un número que se calcula en base a la altura por encima (por ejemplo, 6), oa 0 (teóricamente ilimitado). El numberOfLines se ignora; Veo 1 o 2 líneas, y no más.

  2. Agregue una UITextView de solo lectura como subvista. Esto tiene el problema de que el UITextView come mi desplazamiento; Termino desplazándome dentro de una fila UITextView en lugar de moverme sin problemas de una fila a otra. Si deshabilito el desplazamiento en el UITextView, no puedo desplazarme.

Esto es algo bastante común de hacer; ¿Cuál es la mejor manera de lograrlo?

Respuesta

3

Es posible que desee mirar la propiedad userInteractionEnabled del UITextView. Eso debería permitir que la entrada pase al UITableView para que pueda desplazarse.

+0

Parece que funciona, con desplazamiento deshabilitado. Creo que en algún lugar mi UITextView no está teniendo el tamaño adecuado. –

+0

Sí, finalmente fue capaz de obtener el conjunto de parámetros de autosizing adecuado para que funcione. –

0

Mientras jugaba con userInteractionEnabled = NO, scrollEnabled = NO, y obteniendo los parámetros de autosizing correctos establecidos en IB funcionó, creo que ir con un UILabel con numberOfLines = 0 y los mismos parámetros de autosizing es una mejor idea, para el Siguiente persona.

Cuestiones relacionadas