Lorsque j'ai un UITableView dans le contrôleur de vue visible, comment puis-je le recharger pour que les données que je regarde changent pour les nouvelles données. Le simple appel de rechargement ne semble pas actualiser les données tant que je ne l'ai pas fait défiler.Comment recharger un UITableView pendant que je le regarde
Répondre
L'appel de la méthode reloadData
actualise les données dès que la méthode est appelée. Il n'attend pas que la table défile. Assurez-vous que la source de données (tableau ou dictionnaire ou n'importe où vous avez enregistré les valeurs) est modifiée avant d'appeler reloadData
.
Etes-vous en train d'actualiser les données du thread principal? Si oui, vous devez appeler la méthode reloadData selon la méthode suivante:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
Donc, pour un tableView il serait:
[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
Juste une mise à jour 2013, vous devriez aussi être capable de recharger les données, aussi longtemps que vous utilisez
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
GCD est génial!
Cela devrait être la réponse acceptée. Si vous espériez que reloadData simple rafraîchirait réellement l'interface utilisateur sans aucune sorte d'interaction, c'est la façon de le faire. – Markus
Pouvez-vous expliquer plus en détail pourquoi il devrait être exécuté sur le thread principal? – jchnxu
L'aide du code ci-dessous vous rechargerez table pendant que vous cherchez que:
[self.tableView reloadData];
Mauvaise pratique pour appeler ces méthodes – AlexeyVMP
ne semble pas fonctionner avec une cellule de vue de tableau personnalisé. Les données ne changent pas tant que la vue de la table n'est pas défilée. Peut-être que j'ai un bogue dans ma méthode de cellule de vue de table personnalisée. – Genericrich
J'utilise aussi une cellule personnalisée. Fonctionne très bien pour moi. Vous devez avoir manqué quelque chose dans le code. Pouvez-vous poster le code. peut-être que nous pouvons trouver quelque chose – lostInTransit
Si vous utilisez un fichier nib pour concevoir votre vue, n'oubliez pas de connecter la table que vous appelez reloadData dans le code à la table de votre plume. Cela arrive facilement car vous devez également connecter delegate et datasource. –