Domanda

Sto cercando di caricare i dati nell'applicazione in quanto le celle vengono visualizzate in modo che una volta premuto il pulsante accessorio della cella, avrà il caricamento dei dati.

Il mio problema è che sto usando Afnetworking e sto usando questo codice di blocco:

[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]];
.

Così fondamentalmente, sto cercando di modificare il tipo di accessorio dall'indicatore al pulsante di divulgazione una volta caricato i dati, quindi i dati sono in grado di eseguire un seguimento su un'altra vista in cui verranno visualizzati i dati che carichi.

Il mio problema è che sta cambiando la cella. AccessoryType al pulsante prima che abbia finito il caricamento.Il debug nslog effettivamente uscirà quando finisce effettivamente il caricamento.

Qual è il modo migliore per abilitare il pulsante solo quando è stato eseguito il caricamento?Immagino che la richiesta non venga elaborata dal thread principale.Come verrà avvisato che la richiesta ha terminato l'elaborazione, quindi posso cambiare accessoriTypes?

Grazie!

È stato utile?

Soluzione

A meno che non si riciclassi le cellule, non dovresti mai mantenere un riferimento a cella in quanto i dati che rappresenta cambieranno mentre gli scorri dell'utente.Il modo giusto è quello di inviare un blocco sulla coda principale che aggiorna una voce di tabella nelle coordinate di sezione / riga.Il tuo codice quindi controlla se tale cella è visibile, quindi lo aggiorna.Avrebbe anche registrato lo stato in qualche altro modo in modo che quando la tabella scorre lo stato corretto viene applicato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top