inside ios uitableview uiscrollview rendering

ios - inside - UITablewView detiene las representaciones durante el desplazamiento



tableview inside scrollview swift (1)

Introducción corta

Actualmente tengo una UITableView que está llena de celdas personalizadas que muestran el progreso de carga de los archivos que actualmente se cargan en un servidor. Los procesos de carga son simplemente objetos NSURLConnection que se ejecutan de forma asincrónica en segundo plano utilizando el método asincrónico estándar de NSURLConnection.

El problema es que durante el desplazamiento, UITableView, o supongo que el UIScrollView de UITableview, bloquea el hilo principal completo, lo que hace que la información vital como el proceso de carga de mis archivos no se actualice hasta que UIScrollView esté en una parada.

Investigación

Ahora me topé con Creo que es exactamente el mismo problema que el mío en esta publicación: Pregunta similar

Entonces parece que todo el hilo principal se bloquea. También logré agregar un temporizador como en la publicación anterior, que se llama incluso durante el desplazamiento. Pero ... desafortunadamente no soluciona realmente mi situación.

El problema sigue siendo que los objetos NSURLConnection se bloquean, lo que significa que el método de eliminación NSURLConnection: didSendBodyData

todavía no se llama, que es donde obtengo la nueva cantidad de bytes escritos en el servidor y demás, por lo que simplemente no puedo recibir los datos.

¿Hay alguna forma de evitar este problema? ¿Tendría que crear algún tipo de UIScrollView personalizado o algo así para evitar la limitación, como crear mi propio mecanismo de desplazamiento?


¿Ha considerado mover el código de NSURLConnection para ejecutar en un hilo de fondo? Esto debería permitir que se ejecute incluso cuando el usuario se desplaza.

Su UITableView es un UIScrollView (que mencionó) y eso significa que puede registrar un UIScrollViewDelegate contra. Si implementa scrollViewDidScroll: efectivamente puede tener su encuesta principal de hilos para ver si todavía tiene los resultados de su NSURLConnection .