2010-07-25 13 views
1

J'ai un problème étrange avec UITableView et UITextField dans la cellule (sous-vue).UITextField retourne des places avec UILabel dans UITableView pendant le défilement

Dans la vue de la fenêtre (UITableView, groupée, défilable), il y a deux sections.

La première section dispose de 5 lignes:

1.1 - cell with UITextField 
1.2 - cell with UILabel 
1.3 - cell 
1.4 - cell with UITextField 
1.5 - cell with UISwitchButton 

et la deuxième section a obtenu 1 rang:

2.1 - cell 

Scénario: je touche la ligne 1.1 et apparaissent le clavier. Je peux entrer du texte.

Problème: quand je défiler la UITableView à la ligne 2.1 sans appuyer sur Done sur le clavier (si le clavier est toujours à l'écran) et que je presse Done étrange quelque chose arrive et la sous-vue de la cellule 1.2 avec UILabel tourner les places avec subview de la cellule 1.1 avec UITextField.

J'ai essayé une solution de contournement avec self.tableView.scrollEnabled = NO; cela aide, mais je veux vraiment utiliser le défilement.

Répondre

1

Ceci est probablement dû au fait que votre vue de table réutilise les cellules. Le UITableView tente de garder aussi peu de cellules dans la mémoire que possible, de sorte que lorsque vous avez 5 lignes à l'écran votre tableview ressemblera à ceci:

cell 1 
cell 2 
cell 3 
cell 4 
cell 5 

Si vous faites défiler l'écran vers le bas si cell1 et 2 caché votre tableview regardera comme celui-ci

cell 3 
cell 4 
cell 5 
cell 1 
cell 2 

le tableview peut le faire, parce que vous devez définir les données en dehors de la création réelle de la cellule et vous devez utiliser un identifiant de cellule différente pour les cellules qui sont différentes de l'autre. Dans votre cas, le fait de ne pas définir l'identifiant de réutilisation sur zéro ou d'utiliser un identifiant de réutilisation unique pour chaque cellule différente que vous allez afficher devrait résoudre le problème.