2009-03-19 9 views

risposta

34

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.

+7

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

+1

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

+2

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. –

33

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

19

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!

+0

Questa dovrebbe essere la risposta accettata. Se speravi in ​​un semplice reloadData di aggiornare l'interfaccia utente senza alcun tipo di interazione, questo è il modo per farlo .. – Markus

+0

Puoi spiegare ulteriormente perché dovrebbe essere eseguito sul thread principale? – jchnxu

-5

Il seguente codice di aiuto di ricaricare tavolo mentre si cerca che:

[self.tableView reloadData]; 
+4

Cattivo esercizio per chiamare questi metodi – AlexeyVMP