2012-05-15 6 views
0

J'ai une vue déroulante pleine d'objets chargés à partir d'un fichier json. Toutes les 3 secondes, les données sont rechargées et rien ne change vraiment (sauf si un utilisateur a ajouté de nouvelles données). Le rechargement est très rapide, mais la vue défile revient en haut. Je veux qu'il reste au point où il était. Comment puis-je faire ceci?Faire défiler la vue défiler toujours vers le haut

J'utiliser ce code pour supprimer tout pour rechargeant:

[scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

Et puis je repeupler la vue de défilement. Lors du rechargement, le cadre de la vue déroulante reviendra à la valeur initiale, et seule l'addition des objets le fera se dilater.

Répondre

0

C'est en supposant que vous définissez contentSize chaque objet du UIScrollView reçu du fichier JSON:

Lorsque ce premier objet se charge à partir du fichier JSON à nouveau, il définit la contentSize vraiment bas, donc défilement jusqu'au sommet.

Vous ne voulez vraiment pas tout enlever de l'UIScrollView avant de rajouter tous les objets. Vous devriez plutôt mettre en cache les objets qui s'y trouvent et ne le faites que s'il y a un changement. Même quand il y a un changement je regarderais peut-être juste en ajoutant les changements plutôt que d'enlever et de rajouter des objets.

+0

Comment puis-je chacher les objets, alors vérifiez s'il y a un changement dans le fichier JSON ou pas? – Alessandro

+0

Il n'y a vraiment pas de réponse "fourre-tout" ici, mais ce que je ferais, c'est de créer des objets Objective-C personnalisés de chaque objet JSON et de surcharger la méthode isEqual et de vérifier tout ce dont vous avez besoin. Je sais que c'est vague, mais comme je l'ai dit, il n'y a vraiment pas de réponse «fourre-tout». – jordanperry

Questions connexes