Pregunta

Estoy cargando un montón de archivos desde el iPhone a un servicio web. Quiero tener un UIAlertView en pantalla con un UIActivityIndicatorView dentro. Tengo que trabajar bien. Sin embargo, quiero actualizar el título de UIAlertView a medida que se carga cada archivo. (" Carga del archivo 1 ... " ;, " Carga del archivo 2 ... " ;, etc.)

Sé que no puedes simplemente establecer el título en un bucle con solicitudes web sincrónicas, ya que nunca se llamará al bucle de ejecución de la interfaz de usuario. Intenté usar NSTimer para desencadenar las solicitudes web, pero como la duración de cada solicitud es impredecible, no funciona. (El mensaje podría actualizarse antes de que la solicitud finalice).

Realmente quiero subir cada archivo de forma síncrona, uno a la vez, ya que el ancho de banda del iPhone es bastante limitado. Simplemente no puedo encontrar un mecanismo para decir 'una vez que finalice esta operación sincrónica, deje que la interfaz de usuario se actualice para hacer una marca y luego realice otra operación sincrónica'.

¿Fue útil?

Solución

OK, aquí está el enfoque que tomé para resolver esto:

  1. Crea el UIAlertView
  2. Inicie una solicitud web asíncrona para publicar el elemento, establezca el delegado en uno mismo
  3. En el método connectionDidFinishLoading: compruebe si hay más elementos para publicar. Si los hay, actualice el título y inicie otra solicitud asíncrona. Si no es así, descartar la alerta.

Significa que tienes que mantener algunas variables de clase para rastrear qué solicitud se está cargando, pero funciona perfectamente y no implica ningún proceso complicado o cualquier otra cosa.

Otros consejos

intentaste esto?

alertView.title = @"new title";
[alertView setNeedsDisplay];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top