2010-11-20 9 views
0

J'ai une vue de table dans laquelle chaque cellule a un TextField où les données d'entrée d'utilisateur.Cellules d'Iphone avec le champ de texte dans TableView

Je veux quand la presse utilisateur un bouton obtenir tous les textes dans les champs afin de vérifier si les données sont valides. Mais je ne sais pas comment obtenir le champ de texte dans chaque cellule.

Merci!

Répondre

2

Ce n'est pas une bonne idée de s'appuyer sur la cellule + textfield pour être le backing-store de vos données. La raison en est que UITableView va recycler ces cellules lorsque l'utilisateur fait défiler la liste. La seule façon de le faire de manière fiable est d'allouer/initialiser chaque cellule une fois et de les gérer toutes dans un tableau, à partir duquel vous récupérez la cellule correcte lorsque la table appelle cellForRowAtIndexPath :. Mais c'est une mauvaise idée si vous avez beaucoup de lignes. Si vous n'avez que quelques lignes, cela peut être une bonne idée, et vous pouvez simplement traverser votre tableau pour accéder à chaque cellule/champ de texte.

Sinon, vous devez mettre en œuvre le champ texte méthode déléguée à saisir lorsque le contenu du champ changent, dans une cellule donnée. Quand ils le font, vous pouvez saisir le contenu du champ et stocker la valeur dans votre magasin de soutien. Vous pourriez envisager de définir la balise textField comme étant son index de ligne - c'est un moyen simple de savoir quel textField est mis à jour lorsque votre méthode de délégué est appelée.

+0

Je ne suis pas sûr même qui est fiable - si vous faites quelque chose comme '-reloadRowsAtIndexPaths: withRowAnimation:', UITableView attend deux cellules différentes de sorte qu'il peut animer un et l'autre. –

Questions connexes