2010-01-16 3 views
3

Une fois que mon UITableView a été rempli avec des données, je veux faire défiler jusqu'à un index spécifique. Je pense que c'est comment vous le faites:iPhone - faites défiler UITableView jusqu'à l'index

[[self tableView] scrollToRowAtIndexPath:[NSIndexPath indexPathWithIndex:3] atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; 

Le problème est quand je suis censé exécuter ce. Comment savez-vous quand une table a fini de charger les données?

Répondre

4

Tout d'abord, vous devez utiliser indexPathForRow:inSection: pour les chemins d'index dans les vues de table.

Si vous voulez faire quelque chose après le chargement de la vue de la table, utilisez le viewDidAppear: de votre contrôleur de vue, et si cela est trop tôt, mettez en file d'attente un sélecteur en utilisant performSelector:withObject:afterDelay:.

+0

J'ai déjà essayé viewDidLoad, mais c'était trop tôt. Je vais essayer viewDidAppear. Je préfère ne pas utiliser de minuterie car c'est très hackish. N'y at-il vraiment aucun événement ou quelque chose qui est envoyé une fois que tous les éléments ont été récupérés à partir de la source de données? – quano

+0

Pas vraiment. Les éléments ne sont pas tous récupérés - AFAIK votre source de données/délégué est interrogé pour la hauteur de tous les éléments, et ensuite pour les cellules pour les lignes visibles uniquement, afin d'économiser la mémoire et les ressources du processeur. Il y a une autre façon - si vous utilisez 'reloadData', vous pouvez être certain qu'après l'appel de la méthode, toutes les mises à jour ont été effectuées, y compris le dessin des cellules, etc. –

+0

J'ai essayé viewDidAppear et cela semble fonctionner. – quano

Questions connexes