2012-07-30 9 views

Respuesta

8

Tuve el mismo problema, parece ser un error. Experimenté algunos y el problema no ocurre cuando configuro la opción de animación en UITableViewRowAnimationNone. Algunas otras cosas interesantes suceden cuando configura esa opción en UITableViewRowAnimationTop, también.

+0

y .... ¿dónde y cuándo lo configuras? – Josh

+3

Aún no se ha solucionado. Gracias. – Maik639

10

Si las celdas de la tabla son estáticas (es decir, está utilizando el mismo objeto de celda para reemplazar el que se muestra actualmente), lo que está viendo es un artefacto de la animación de transición.

Piénsalo de esta manera. Digamos que estableces UITableViewAnimationOptionFade. Cuando se va a reemplazar la celda, la celda con la que se va a reemplazar (que en este caso es exactamente el mismo objeto) tiene una animación de fundido de entrada añadida. Luego, la celda que se reemplaza (una vez más, es el mismo objeto) tiene una animación de fundido de salida añadida. Al final, la celda está realmente allí, pero es invisible porque la animación de fundido ha hecho que ese objeto de celda sea invisible.

En una vista de tabla no estática, en la que la celda de reemplazo es un objeto diferente de la celda que se reemplazará, esto no es un problema, ya que las animaciones se agregan a dos objetos diferentes.

+0

No sé cómo el patrón/patrón recomendado puede garantizar que las celdas sean de hecho diferentes. ¿No existe la posibilidad de que 'dequeueReusableCellWithIdentifier' devuelva la misma celda reutilizable que la que se oculta? Me parece que Apple debería arreglar este error. No hay ninguna razón por la que no pueda admitir ambos escenarios con una simple comprobación para ver si la nueva celda == la celda anterior. – devios1

+0

De ninguna manera que he encontrado. Archivar un radar, supongo. – leftspin

+0

Buena explicación. ¿Cuál sería la solución entonces? – Josh

Cuestiones relacionadas