Question

Je vous envoie une notification d'une vue à une autre vue. Mon problème est que la notification de l'avis que je fais appel à ma méthode de cellForRowAtIndexPath ne fait que s'envoyé lorsque le tableview défile. Comment puis-je arrêter cela et faire envoyer la notification une fois que les images ont téléchargé? Voici mon code: https://gist.github.com/756302

Merci

MKDEV

Était-ce utile?

La solution

pour autant que je comprends votre code, le message déclenche le rechargement de la table. Cela devrait conduire à une actualisation des cellules.

Ainsi, vous devrez vérifier dans la ligne 76, si la cellule est en cours d'élaboration, car un rechargement a été déclenché à partir de la finition message (et l'image est maintenant prêt à l'affichage) ou si vous avez besoin pour démarrer le téléchargement asynchrone de l'image.

La première chose qui me vient à l'esprit pour le vérifier est de définir une propriété 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];
}

puis ajouter dans

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

Notez qu'il pourrait y avoir d'autres raisons pour lesquelles la table est rechargée -. La vue aurait pu être disparu ou déchargé et vous pourriez ne pas vouloir déclencher votre chargement plusieurs fois asynnchronous

Autres conseils

Votre code devrait fonctionner à droite, lorsque le connectionDidFinishLoading, vous appelez le NSNotificationCenter pour envoyer la notification, il n'y a pas de méthode de post dans cellForRowAtIndexPath

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top