¿Cómo mejorar el performance de un UITableViewCell con demasiados UITextViews?

Tengo una UITableViewCell con demasiados UITextViews, y he tenido un mal performance.

Quiero dibujar el text, y cuando el usuario toca el text para tratar de editar, coloque allí una UITextView real.

¿Cómo podría implementar eso?

En la Biblioteca para desarrolladores de iOS , tienes un ejemplo llamado TableViewSuite , aquí tienes algunos ejemplos de cómo implementar UITableView's , el último ejemplo (número 5) presenta la mejor manera de implementar un UITableView con performance, por lo que te sugiero que revises este ejemplo.

Descripción del proyecto TableViewSuite :

Este ejemplo muestra cómo usar UITableView a través de una progresión de aplicaciones cada vez más avanzadas que muestran información sobre zonas horarias.

Al implementar una celda de vista de tabla, hay una tensión entre el performance de desplazamiento óptimo y el performance óptimo de edición / reorderamiento. Por lo general, debe utilizar subenviaturas en la vista de contenido de la celda.

Cuando tiene un control de edición o reorderamiento, el uso de subvistas facilita la implementación y las animaciones funcionan mejor porque UIKit no tiene que volver a dibujar durante las animaciones.

Las subvenciones tienen dos costos:

1) Inicialización. Esto se puede mitigar en gran parte reutilizando las celdas de la tabla. 2) Composition. Esto puede mitigarse en gran medida al hacer opacas las vistas. A menudo, una subvista translúcida está bien, pero más de una frecuencia provoca caídas de cuadros mientras se desplaza.

Sin embargo, si el contenido es complejo (más de tres subvistas), el performance de desplazamiento puede verse afectado. Si esto se convierte en un problema, puede dibujar directamente en una subvista de la vista de contenido de la celda de vista de tabla.

El quinto ejemplo es una extensión del cuarto. Muestra aún más información sobre cada zona horaria, como la hora y el día relativo en esa zona horaria. Muestra cómo puede crear una celda de vista de tabla personalizada que contiene una vista personalizada que dibuja su contenido en -drawRect :.

Simplemente agregue UITextView como subvista bajo UITableViewCell .

En - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath , puede agregar UITextView de la siguiente manera:

 // Assume cell is a UITextView * UITextView *txtView = [[UITextView alloc] initWithFrame:CGRectMake(5, 30, 100, 30)]; [cell addSubview:txtView]; return cell;