2009-12-14 16 views
13

Mi aplicación se cuelga cuando lanzo mi UITableView mientras estoy animando. La aplicación funciona sin problemas siempre que la animación se complete. A continuación se muestra el resultado de un golpe en la que se pide UIButton[tableView setContentOffset:offset animated:YES]; y luego un rayo toque rápido en la backBarButtonItem que aparece la UITableViewController:¿Hay alguna manera de cancelar un UITableView/UIScrollView setContentOffset animado:?

#0 0x31ec3ebc in objc_msgSend 
#1 0x33690248 in -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded] 
#2 0x30defa14 in -[NSObject performSelector:withObject:] 
#3 0x33690098 in -[UIAnimator stopAnimation:] 
#4 0x3368fb7c in -[UIAnimator(Static) _advance:] 
... 

nunca he visto un accidente en _scrollViewAnimationEnded y al parecer tampoco lo ha hecho Google. He intentado llamar al [tableView setContentOffset:offset animated:NO]; desde el UITableViewController del método - (void)viewWillDisappear:(BOOL)animated, pero esto no resolvió el problema.

¿Alguna idea para detener un UITableView o UIScrollView en medio de la animación?

Respuesta

28

Parece que se trata de un problema de delegado. ¿Tiene un delegado para la tabla y, en caso afirmativo, está desasociado cuando está la tabla? Pruebe a eliminar el delegado de tableView antes de liberarlo.

[El tableView es retenido por CoreAnimation mientras se está animando, por lo que probablemente no es el problema.]

+1

No estoy liberando de forma explícita la tabla vista: el problema ocurrió cuando su controlador se desconectó de la vista (y si el controlador de navegación lo eliminó de la memoria). Aún así, creo que lo resolvió ... desde que asigné y anulé el delegado de la vista de tabla cuando la vista aparecerá/desaparecerá, no he podido reproducir este bloqueo. ¡Gracias! –

+3

Por cierto, vi este bloqueo incluso cuando uso ARC. ¡Asegúrese de eliminar los delegados de la mesa manualmente! – MikecheckDev

1

creo que el problema con usted es que se está liberando la matriz de origen de datos, antes de soltar el tableView. tratar la comprobación de esto también en el dealloc

0

Esto puede suceder si ha insertado un controlador de actualización en una vista de tabla como una subvista (mi sugerencia, nunca haría eso) ...

Cuestiones relacionadas