Quando ho un UITableView come parte del controller della vista visibile, come posso ricaricarlo in modo che i dati che sto guardando cambino nei nuovi dati. La semplice chiamata a ricaricare non sembra aggiornare i dati finché non lo faccio scorrere.Come ricaricare un UITableView mentre lo sto guardando
risposta
La chiamata del metodo reloadData
consente di aggiornare i dati non appena viene chiamato il metodo. Non aspetta che la tabella scorra. Assicurati che l'origine dati (array o dizionario o ovunque tu abbia salvato i valori) sia cambiata prima di chiamare reloadData
.
Si stanno aggiornando i dati dal thread principale? Se è così, è necessario chiamare il metodo reloadData utilizzando il seguente metodo:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
Così per un tableView sarebbe:
[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
Solo un aggiornamento del 2013, si dovrebbe anche essere in grado di ricaricare i dati, così come lungo come si utilizza
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
GCD è impressionante!
Il seguente codice di aiuto di ricaricare tavolo mentre si cerca che:
[self.tableView reloadData];
Cattivo esercizio per chiamare questi metodi – AlexeyVMP
non sembra di lavorare con una cella di vista tabella personalizzata. I dati non cambiano finché non si scorre la vista tabella. Forse ho un bug nel mio metodo di cella di visualizzazione tabella personalizzata. – Genericrich
Anche io uso una cella personalizzata. Funziona alla grande per me. Devi aver perso qualcosa nel codice. Puoi pubblicare il codice. forse possiamo trovare qualcosa – lostInTransit
Se stai usando un pennino per progettare la tua vista, non dimenticare di connettere la tabella che stai chiamando reloadData nel codice alla tabella nel tuo pennino. Succede facilmente dal momento che è necessario connettere anche i delegati e l'origine dati. –