SDK de l'iPhone - Comment faire défiler un UITableView par programmation de l'animation?
Comment faire défiler une UITableView à une position spécifique avec une animation?
Actuellement, je suis en utilisant ce code pour accéder à une position:
//tableController -> viewDidLoad
[self.tableView reloadData];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
Le problème avec ce code, c'est que la table de sauts droit à la bonne position, sans aucune animation. Est-il possible d'activer l'animation ou de définir la durée?
Merci pour toute aide.
OriginalL'auteur dan | 2010-03-01
Vous devez vous connecter pour publier un commentaire.
Il fonctionne très bien pour moi:
Pour être sûr que ce n'est appelée qu'une seule fois, vous pouvez faire une vérification comme ceci:
OriginalL'auteur mxg
Essayer de commenter le
reloadData
appel. Si je comprends votre question correctement, et vous êtes dansviewDidLoad
, vous ne devez pas appeler ça de toute façon.Aussi, si vous avez tout juste d'avoir fait pousser la-vue-contrôleur, vous n'obtiendrez pas une animation de défilement. Vous devrez insérer un retard (j'ai trouvé un quart de seconde) entre le moment où
viewDidLoad
a été appelé et quand votre animation commence.OriginalL'auteur Frank Schmitt
J'ai deux suggestions pour vous d'enquêter:
Vous exécutez votre application sur le simulateur ou l'iPhone lui-même? J'ai remarqué quelques animations se comportent différemment dans le simulateur.
Est-il possible que vous appelez scrollToRowAtIndexPath:atScrollPosition:animé par deux fois en succession rapide? Cela peut 'confondre' l'animation. Vous devez appeler cette fonction qu'une seule fois lors du traitement d'un événement donné.
Il se peut que, pour quelque raison que ce soit, une animation peut pas être démarré à partir de viewDidLoad parce que c'est une partie de la vue d'initialisation. Je ne dis pas que je sais exactement pourquoi ce qui serait, mais il semble plausible. Essayez de planifier un événement avec NSRunLoop de performSelector, et faire de votre barre de défilement lorsque cela est appelé.
OriginalL'auteur richb
Je sais que c'est peut-être trop tard, mais peut-être que c'est de l'aide aux autres,
maintenant, vous pouvez faire défiler une table juste avec
[tableView scrollsToTop]
.OriginalL'auteur Ildar.Z