Question

J'essaie de charger des données dans l'application car les cellules entrent en vue de manière à ce qu'elles appuient sur le bouton Accessory de la cellule, les données sont chargées.

Mon problème est que j'utilise Afnetworking et j'utilise ce code de bloc:

[Request fullRequestWithBlock:^(NSArray *detailedReqFromWeb, NSError *error) {
        if (error) {

            [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message:[error localizedDescription] delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", nil), nil] show];
        } else {

            NSArray *objs = [NSArray arrayWithObjects: [detailedReqFromWeb objectAtIndex: 0], [detailedReqFromWeb objectAtIndex: 1], [detailedReqFromWeb objectAtIndex: 2], [detailedReqFromWeb objectAtIndex: 3], [detailedReqFromWeb objectAtIndex: 4], [detailedReqFromWeb objectAtIndex: 5], nil];
            NSArray *keys = [NSArray arrayWithObjects:@"Risk", @"Destination", @"Source", @"Customer", @"Subcategory", @"Deployment", nil];

            NSMutableDictionary *detailsforRequestDictionary = [[NSMutableDictionary alloc] initWithObjects:objs forKeys:keys];

            [request addEntriesFromDictionary: detailsforRequestDictionary];

            NSLog(@"%@ Finished Loading", [idNumbers objectAtIndex:row]);
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

        }

    } forID: [[idNumbers objectAtIndex:row] substringFromIndex:1]];

Si fondamentalement, j'essaie de changer le type d'accessoire de l'indicateur au bouton de divulgation une fois que les données sont chargées, alors je peux effectuer une SEGUE à une autre vue où les données que j'ai chargées seront affichées.

Mon problème est qu'il change la cellule.Accessorytype sur le bouton avant de terminer le chargement.Le NSLOG de débogage résulte effectivement lorsqu'il finit en réalité le chargement.

Quelle est la meilleure façon de ne permettre que le bouton lorsque cela est fait en cours de chargement?Je suppose que la demande n'est pas traitée par le fil principal.Comment puis-je être informé que la demande a fini de traitement afin que je puisse changer d'accessoire?

merci!

Était-ce utile?

La solution

Sauf si vous ne recyclez pas les cellules, vous ne devez jamais conserver une référence de cellule autour que les données qu'il représente changera à mesure que l'utilisateur fait défiler.La bonne façon consiste à envoyer un bloc sur la file d'attente principale qui met à jour une entrée de table dans les coordonnées à la section / ligne.Votre code puis vérifie si cette cellule est visible, puis la mise à jour.Il enregistrerait également le statut d'une autre manière, de sorte que lorsque le tableau défile le statut approprié est appliqué.

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