Lors de l'appel de reloadData sur un UITableView, quelles sont les méthodes réellement appelées?Que fait exactement reloadData?
[tableView reloadData];
Lors de l'appel de reloadData sur un UITableView, quelles sont les méthodes réellement appelées?Que fait exactement reloadData?
[tableView reloadData];
La vue totale de la table est rechargée, il appelle cellForRowAtIndexPath pour obtenir les cellules pour toutes vos lignes et sections ... Ce faisant, il appelle aussi méthode NumberOfSections de tableView source de données et numberOfRows méthode de source de données tableview etc etc
De plus, pour référence ultérieure, cette information est facilement disponible dans la documentation here. Copier/coller de la documentation d'Apple:
Appelez cette méthode pour recharger toutes les données utilisées pour construire la table, y compris les cellules, les en-têtes de section et les pieds de page, les tableaux d'index, etc. Pour plus d'efficacité, la vue de table réaffiche uniquement les lignes visibles. Il ajuste les décalages si la table se rétrécit à la suite du rechargement. Le délégué ou la source de données de la vue table appelle cette méthode lorsqu'il souhaite que la vue de table recharge complètement ses données. Il ne doit pas être appelé dans les méthodes qui insèrent ou suppriment des lignes, en particulier dans un bloc d'animation implémenté avec des appels à beginUpdates et endUpdates
Pour la réponse acceptée est très bonne. Mais je veux mentionner toutes les cellules visibles seront recréées. Habituellement ce n'est pas un gros problème. Mais si votre propriété stockée tableViewCell contient des données, elles peuvent être perdues. Par exemple, cliquez sur un bouton d'une tableViewCell pour demander des données à partir d'Internet et enregistrer les données récupérées dans une propriété stockée. Si vous reloadData
, les données récupérées seront perdues. Bien sûr, ce n'est pas un vrai faire une demande de tableViewCell. Mais je veux juste expliquer cette situation.
Il est censé appeler cellForRowAtIndexPath. Parfois, ce n'est pas du tout. –
@JimThio J'ai ce problème exact, savez-vous une solution pourquoi mon cellForRowAtIndexPath n'est pas appelé après que je recharge des données? – vinylDeveloper
Avez-vous trouvé une réponse à la raison pour laquelle cellForRowAtIndexPath n'est pas appelé en envoyant tableView le message reloadData? – Beanno1116