2010-07-17 6 views
0

J'ai un écran qui fonctionne de manière similaire à l'écran de contact du carnet d'adresses.Problème étrange de disparition des cellules contenant UITextFields dans UITableView

L'écran affiche certaines données dans un UITableView et fournit un bouton "Modifier".

Lorsque l'utilisateur appuie sur "Modifier", UITableView est animé pour afficher les données en "Mode Édition".

Il n'y a pas de relation 1: 1 entre les champs dans "Mode d'affichage" et les champs dans "Mode d'édition". Par exemple, la cellule "Mode d'affichage" peut contenir un nom comme "John Doe" et le mode d'édition peut avoir deux cellules, une pour "Prénom" et une pour "Nom".

Les cellules en "Mode Édition" contiennent une étiquette sur la gauche et un UITextField sur la droite (tout comme les contacts).

Tout cela fonctionne très bien. Pas de problème. Ajustement pour le clavier et tout. Aimer. Le problème que j'ai est quand l'utilisateur clique sur "Edit", et clique dans l'un des UITextFields mais n'appuie jamais sur le bouton "Next"/"Done" --- et le clavier montre toujours (le UITextField est toujours firstResponder) ---

Si, alors que le champ UITextField est toujours premier répondeur, l'utilisateur appuie sur le bouton "Terminé", et la table revient à "Mode d'affichage", et l'utilisateur entre de nouveau "Mode d'édition" ", l'un des UITableViewCells sera manquant (aléatoirement, parce qu'ils sont réutilisés).

Si l'utilisateur répète alors le processus sur un autre UITextField, puis deux cellules seront manquants la prochaine fois, etc etc etc

Ma théorie est quelque chose n'est pas libéré correctement, et qui est à l'origine du mécanisme de réutilisation de cellules pour casser en quelque sorte ... mais je suis assez sûr que ce n'est pas un problème avec mon code en soi.

Ma question est; Quelqu'un a-t-il déjà vu cela avant? Est-ce un problème connu?

Je peux forcer n'importe quel firstextponder UITextField à démissionner quand l'utilisateur clique sur le bouton "Done Editing", en faisant ma première vue Responder (et cela corrige le problème) ... mais je suis un peu surpris que j'aurais pour faire ça. Je suppose que je cherche une confirmation que je suis/je ne suis pas fou.

Merci

Répondre

0

On dirait que personne n'a pas de réponse, donc:

Force de la UITextField à démissionner premiers intervenants et le problème disparaît.

Questions connexes