2011-04-05 13 views
5

Quiero una vista de tabla con solo celdas, y cuando hace clic en una celda debe expandirse y mostrar más información de la celda cliqueada.Table view cell expandible iOS

He visto bastantes temas sobre esto, pero la mayoría de ellos están vinculados a Table View Animations and Gestures en la página de desarrollador de Apple. Lo cual lo hace de una manera diferente. Usan secciones de encabezado, pero quiero usar la celda que es ampliable por motivos de diseño.

Ya he intentado varias cosas, principalmente con

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {  

    if (isSearching && indexPath.row == selectedIndex) { 
     return 110; 
    } 
    else { 
     return rowHeight;  
    } 

cuando hago clic en la célula, la célula se expande pero la información en esa celda es el mismo. También la altura de la celda cuando se expande debe estar relacionada con la cantidad de texto en los detalles.

Thnx!

+0

¿Implementaste layoutSubviews o usaste autoresizingMask en la celda? – David

+0

¿no? ¿Debo hacer eso? – peter

+0

sí, el contenido de la celda no cambia de tamaño automáticamente. Si cambia su altura, eso no tendrá efecto automáticamente en sus subvistas. Si se establece un MasteringizingMask, las subvistas cambiarán el tamaño en consecuencia. Si el autoresizingMask no es suficiente, puede anular el diseño de las vistas para cambiar el programa de las subvistas. – David

Respuesta

9

Puede lograrlo mediante el uso de celdas personalizadas. Cree dos celdas personalizadas, una para la fila normal y otra para la fila expandida. Cuando el usuario toca una celda en particular, puede grabar su indexPath y volver a cargar tableView. Mientras recarga puede cambiar la altura de esta fila seleccionada usando el código que acaba de publicar (aumentando la altura de solo la celda seleccionada). Esto daría un efecto de expansión celular.

+0

didSelectRowAtIndexPath se llamaría para la celda seleccionada. Puede configurar un indicador aquí, que puede ser referido de nuevo por los métodos UITableViewDatSource, cuando se realiza [tableView reloadData]. – Vin

+0

¿De qué manera el código sabe qué celda personalizada debe seleccionarse? ¿Declaro esto en didSelectRowAtIndexPath? ¿Y de qué manera? – peter

+0

cuando se llama de nuevo a cellForRowAtIndexPath después de volver a cargar tableView, puede verificar, utilizando la marca para la que se llamó. Luego puede volver a dibujar la celda con una nueva celda personalizada, dejando las otras como antes. – Vin

Cuestiones relacionadas