Pregunta

Estoy enviando una notificación de una vista a otra vista. Mi problema es que la notificación en la vista que estoy llamando en mi método cellForRowAtIndexPath sólo es cada vez envía cuando el tableview se desplaza. ¿Cómo puedo detener esto y hacer que envíe la notificación una vez que las imágenes han descargado? Aquí está mi código: https://gist.github.com/756302

Gracias

mkdev

¿Fue útil?

Solución

por lo que yo entiendo su código, el mensaje se disparará la recarga de toda la tabla. Esto debería conducir a una actualización de las células.

Por lo tanto, se tendrá que comprobar en la línea 76, si se está elaborando la célula debido a una recarga se desencadenó desde el mensaje de finalización (y la imagen ya está listo para la pantalla) o si necesita para iniciar la descarga asíncrona de la imagen.

La primera cosa que viene a la mente de comprobar esto es para establecer una propiedad en reloadTableView:

- (void)reloadTableView
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"aaa"];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"name" object:nil];
    NSLog(@"removeobserver");
    loadImageFinished = YES;
    // if your table has several sections you'll need to adopt the section number 
    NSIndexSet *indices = [[NSIndexSet alloc] initWithIndex:0];
    [self.tableView reloadSections:indices withRowAnimation:UITableViewRowAnimationFade];
    [indices release];
}

y luego añadir en

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   ...
   if (loadImageFinished) {
      ... 
   } else {
      [asyncImage loadImageFromURL:[NSURL URLWithString:pathImage]];
   }
   ...
}

Tenga en cuenta que podría haber otras razones por las que la tabla se vuelve a cargar -. La vista se podría haber desaparecido o descargada y es posible que no desea activar su carga asynnchronous varias veces

Otros consejos

El código debería funcionar bien, cuando el connectionDidFinishLoading, se llama a la NSNotificationCenter para enviar la notificación, no existe un método puesto en cellForRowAtIndexPath

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