Aide Avec NSNotifcation et téléchargement asynchrone
-
13-10-2019 - |
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
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