Existe-t-il un moyen de savoir quand a UITableView
a fini de demander des données à sa source de données?
Aucune des méthodes viewDidLoad
/ viewWillAppear
/ viewDidAppear
du contrôleur de vue associé ( UITableViewController
) n'est utile ici, car elles se déclenchent toutes trop tôt. Aucun d'entre eux ne garantit (tout à fait compréhensible) que les requêtes adressées à la source de données sont terminées pour le moment (par exemple, jusqu'à ce que la vue défile).
Une solution que j'ai trouvé est d'appeler reloadData
à viewDidAppear
, puisque, lorsque les reloadData
rendements, la vue de la table est assuré d'avoir fini d' interroger la source de données autant qu'il doit pour l'instant.
Cependant, cela semble plutôt désagréable, car je suppose que cela oblige la source de données à se voir demander les mêmes informations deux fois (une fois automatiquement et une fois à cause de l' reloadData
appel) lors de son premier chargement.
La raison pour laquelle je veux faire cela est que je veux conserver la position de défilement du UITableView
- mais jusqu'au niveau du pixel, pas seulement jusqu'à la ligne la plus proche.
Lors de la restauration de la position de défilement (en utilisant scrollRectToVisible:animated:
), j'ai besoin que la vue de la table contienne déjà suffisamment de données, sinon l' scrollRectToVisible:animated:
appel de méthode ne fait rien (ce qui se passe si vous placez l'appel seul dans l'un des viewDidLoad
, viewWillAppear
ou viewDidAppear
).