2012-02-20 14 views
16

Encontré este método llamado - (void)prepareForReuse. I read the document pero no entiendo cómo usarlo.Cómo utilizar el método prepareForReuse

Cuando muevo mi vista de tabla, se atasca, o tiene un desplazamiento lento y tengo la intención de usar prepareForReuse. ¿Alguien puede dirigirme a un buen tutorial o darme un código de muestra para que yo pueda aprender?

Lo siento, no tengo ningún código para demostrar mi funcionamiento.

+1

Dudo que 'prepareForReuse:' resuelva sus problemas de rendimiento ... – JustSid

+0

Entonces, ¿para qué sirve? – shajem

+0

Para borrar el 'UITableViewCell' de cualquier contenido que desee restablecer antes de que aparezca nuevamente en' UITableView'. Solo es necesario si escribe sus propias subclases con controles propios y nunca debe invocarlo directamente. – JustSid

Respuesta

16

El método prepareForReuse es llamado por la vista de tabla propietaria de una celda que no se necesita en este momento. Se supone que debe hacer una limpieza menor aquí para su celda personalizada, como restablecer los valores alfa y similares, para luego poder volver a utilizarla. Usted no debe llamarlo usted mismo, por cierto.

Solo necesita preocuparse si está implementando celdas personalizadas de tabla: lo sobreescribe para su limpieza.

Usted está "usando" simplemente mediante el uso de identificadores de reutilización en tableView:cellForIndexPath::

static NSString *CellIdentifier = @"Identifier"; 

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier]; 
    [cell autorelease]; 
    // Set up your cell 
} 

Para mejorar aún más su vista del rendimiento tabla, consulte la pregunta Tricks for improving iPhone UITableView scrolling performance?

11

que lo utilice si tiene lógica su clase de celda personalizada que puede o no modificar una propiedad de celda. Por ejemplo, si su mesa llama a su celular, pero en algunos casos puede modificar el color de fondo, pero algunos casos no será y utilizaría el predeterminado que ha establecido, entonces se tendría que aplicar

-(void)prepareForReuse{ 
    [super prepareForReuse]; 

    // Then Reset here back to default values that you want. 
} 

De lo contrario, podría reutilizar los valores anteriores que haya establecido si su lógica no lo cambia.

+2

¿Cómo lo configuro para que la celda que se modificó permanezca modificada mientras que las otras celdas que se "reutilizarán" se mantengan como la opción predeterminada? – lukaivicev

+0

@lukesIvi ¿Pudo encontrar la solución a su pregunta? – dnadri

Cuestiones relacionadas