Pregunta

Estoy usando el proyecto Three20 para mi aplicación para el iPhone. He reducido mi problema hacia abajo y ahora estoy tratando de recrear los 'Web Imágenes de la Tabla' ejemplo que viene con el proyecto. He copiado el código exactamente como en el proyecto, con la excepción de que no utilizo el TTNavigator (que hace el ejemplo), pero estoy añadiendo mi TTTableViewController manualmente a una barra de pestañas.

El problema es el siguiente; las imágenes de la tabla deben cargar automáticamente desde la web, al igual que en el ejemplo. Pero sólo la carga después I desplazar la tabla de arriba abajo.

En la consola se dice claramente que es la descarga de las imágenes, y aparece el indicador de actividad girando como siempre .. Y a menos que desplazarse hacia arriba y hacia abajo una vez, nunca va a aparecer las imágenes.

Cualquier persona? Gracias de antemano.

P.S: Si estoy usando este código en cualquier UIView al azar, sino que también no funciona (sólo muestra un cuadrado negro):

TTImageView* imageView = [[[TTImageView alloc] initWithFrame:CGRectMake(30, 30, 100, 100)] autorelease];
imageView.autoresizesToImage = YES;
imageView.URL = @"http://webpimp.nl/logo.png";
[self.view addSubview:imageView];

Si pongo este código en mi AppDelegate (a la derecha en la ventana), que hace el trabajo .. extraño?

SOLUCIÓN POSIBLE: A pesar de que he dejado de utilizar TTImageView para este fin, creo que descubrí lo que era el problema; enhebrado (por lo tanto la aceptación de la respuesta de Deniz Mert Edincik). Si comienzo la descarga asíncrona (básicamente porque esa es toda la TTImageView es decir, desde un enlace asíncrono) desde cualquier lugar, pero el hilo principal, sería no arranca. Si comienzo la descarga en el hilo principal, que comenzará de inmediato ..

¿Fue útil?

Solución

suena como un problema de roscado a mí, estás creando TTImageView en el runloop principal?

Otros consejos

Me parece una cosa interesante. Cuando uso la combinación TTTableViewController, TTTableViewDataSource y TTModel que tienen el mismo problema con TTImageView carga. Mi problema era que mi aplicación de métodos Modelo 'isLoading' y 'IsLoaded' no devuelven valores adecuados después de la inicialización del modelo. Eso me obliga a llamar a la recarga del modelo manualy en el método 'viewDidAppear' y que hace que el problema de imagen de carga. Así que reparar mi 'isLoading' y los métodos 'IsLoaded' a ambos vuelven 'NO' después de init modelo, y todo está bien.

Cuando una imagen termina de cargar intente enviar un mensaje reloadData a la vista de tabla. Esto obliga a la mesa para volver a calcular el tamaño de las filas y volver a dibujar la tabla. Sólo tenga cuidado de que no se empieza a descargar la imagen de nuevo en respuesta a este mensaje.

He escrito algo similar a esto en una vista de la imagen se carga su propia imagen de la web.

Im mi experiencia, cuando la imagen se había cargado correctamente, pero no se muestra en su opinión, era un caso que necesita la célula para ser contada para volver a dibujar.

Cuando se desplaza la vista de tabla, las células se fijan para volver a dibujar cuando la vienen en pantalla, por lo que aparecen cuando se desplaza.

Cuando se carga la imagen, indican a la célula que está sentado en volver a dibujar enviándole el mensaje setNeedsDisplay.

De este modo, cuando la imagen termine la descarga, la célula en su sesión (y sólo esa celda) se volverá a dibujar en sí para mostrar la nueva imagen.

Es posible que puede que no necesite volver a dibujar toda la célula y puede ser capaz de continuar con sólo volver a dibujar la vista de la imagen utilizando la misma llamada al método. En mi experiencia, mis celdas de la tabla vista de jerarquía se aplana, así que tuve que volver a dibujar toda la célula.

No tengo una respuesta para lo que quiero que hacer, pero voy a decir que esto se considera una característica, y el comportamiento esperado. Se utiliza en TTImageView UITableView cuando se quiere hacer la carga diferida de imágenes. TTImageView sólo cargará las imágenes cuyos cuadros son visibles en la pantalla. De esta manera, el dispositivo utiliza sus recursos de la red para descargar imágenes que el usuario tiene en frente de ellos, en lugar de un montón de imágenes que el usuario no está incluso tratando de mirar.

Considere tener una larga lista que puede contener un par de cientos de imágenes en miniatura (como una lista de amigos). Sé por experiencia que si una patada fuera de más de 100 solicitudes de imágenes en dispositivos más antiguos, el uso de memoria se van por las nubes, y su aplicación probablemente se bloqueará. TTImageView resuelve este problema.

Este es un problema hilo. Puede cargar las imágenes mediante la inclusión de la línea:

[TTURLRequestQueue mainQueue].suspended = NO;

en - (void)didLoadModel:(BOOL)firstTime.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top