2010-02-18 3 views
0

Donc, j'ai un UITableView fonctionnant bien composé de 3 lignes (chacune incluant et image, et un nombre variable de champs de texte).UISegmentedControl rend UITableView lent/lag?

Maintenant la 4ème rangée a un UISegmentedControl. Dès que je l'ai ajouté, le UITableView retarde/saute/saute. Quand je l'enlève encore, tout est lisse.

Comment puis-je ajouter le UISegmentedControl tout en ayant un défilement régulier?

+0

Comment l'ajouter maintenant? Il peut être plus facile d'aider à voir votre code. – Vladimir

Répondre

1

Avait un problème similaire. Une fois le contrôle segmenté hors de vue, le défilement vers l'arrière est agité. Le problème pourrait être l'initialisation.

Vérifiez d'abord si vous utilisez le « dequeueReusableCellWithIdentifier » correctement (peut-être vous donner votre manqué personnalisée cellule un identifiant unique?)

deuxième chèque si vous ne faites pas removeAllSegments et insertSegmentWithTitle chaque fois dans cellForRowAtIndexPath. Ajoutez un int à votre cellule personnalisée pour vous indiquer s'il s'agit d'une nouvelle cellule ou d'une cellule réutilisée avec un certain nombre de segments. Ensuite, après que vous ayez "dequeueReusableCellWithIdentifier" si la cellule a le nombre exact de segments, aucun effacement et ajout n'est nécessaire.

Dans mon cas, j'ai fait le checker le premier mais pas le second qui a fait mon retard de défilement. Il semble que le nettoyage et l'ajout de segments soient une opération coûteuse.

Espérons que cela aide.

1

J'ai eu un problème similaire aussi. En raison de la logique métier, mon application doit mettre à jour les cellules pendant un intervalle de quelques secondes. Chaque cellule avait un contrôle segmenté et je supprimais tous les segments et les rajoutais pour chaque mise à jour. Après un certain temps, le défilement devient incroyablement lent. J'ai résolu le problème en enlevant/ajoutant les segments seulement quand c'était vraiment nécessaire au lieu de le faire pour chaque mise à jour. J'utilise aussi "dequeueReusableCellWithIdentifier". Cela fonctionne bien maintenant.