Comment utiliser un UIPickerView pour plusieurs objets textfield dans un point de vue?
J'ai 8 textfields dans une seule vue. Je veux remplir chaque à l'aide d'un pickerview.
Puis-je avoir 1 pickerview qui affiche une liste d'éléments à partir de différents tableaux pour les différents objets textfield?
Quelqu'un peut m'expliquer comment puis-je le faire par programmation avec un exemple de code?
Aussi comment puis-je cacher la pickerview lors de l'affichage des charges et il devrait être affiché uniquement lorsque je clique sur un champ de texte avec son correspondant de la liste de données? Il devrait disparaître lorsque je sélectionne les données et réapparaît lorsque je clique sur un autre champ de texte avec son correspondant de la liste de données et ainsi de suite.
Je suis nouveau sur xcode. Toute aide sera très appréciée. Merci.
OriginalL'auteur Sanjyot Shah | 2012-07-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un seul PickerView qui montre les différentes données en fonction de certaines conditions.
Mon idée est la suivante: vous pouvez créer, disons, de 8 différents tableaux - un pour le remplissage de la UIPickerView selon ce UITextField a été mis sur écoute. De les déclarer dans l'interface comme NSArray et de les initialiser dans le viewDidLoad:
Ensuite, vous créez un autre juste pour souligner le tableau qui doit le remplir (comme
NSArray *currentArray
) et vous n'avez même pas besoin d'init = elle sera utilisée uniquement pour indiquer le bon tableau.Sorte que vous devez définir le délégué de la UITextFields à votre vue-contrôleur, et dans la méthode
textFieldShouldBeginEditing
vous de vérifier qui est l'objet UITextField, affecter le bon tableau en tant que currentArray, recharger la UIPickerView avecreloadData
, et retour PAS dans la mêmetextFieldShouldBeginEditing
méthode. currentTextField est un pointeur seulement de savoir quel est le currentUITextField être "modifié" - nous besoin de le stocker pour être en mesure de définir le texte après la sélection de données dans le sélecteur. Déclarer currentTextField dans l'interface.Ainsi, lorsque votre vue-contrôleur, qui en fait est le UIPickerViewDelegate, vous remplissez votre UIPickerView selon la matrice en cours et que vous n'avez pas besoin de changer quoi que ce soit, il suffit d'utiliser la currentArray que la matrice pour obtenir des données à partir d'.
Maintenant, pour montrer la pickerView:
Après la connexion de l'IBOutlet, dans votre viewDidLoad vous devez faire deux choses: définir le cadre de la UIPickerView et ajoutez-la à la sous-vue:
Maintenant, vous devez créer la méthode dite
animatePickerViewIn
, que nous avons appelée lorsque l'utilisateur appuie sur l'objet UITextField.Pour charger les données dans le pickerView:
Et lorsque l'utilisateur sélectionne une ligne dans la pickerView, vous la recevrez en tant que délégué de la méthode. Donc, il suffit de régler le texte de la currentTextField que la valeur sélectionnée:
OriginalL'auteur Natan R.
De L'Utiliser.
Où vous devez prendre 8 Cas dans le commutateur d'état à l'appel du tableau différent et dans la pickerView.
textfield.étiquette où vous pouvez utiliser votre textfield qui vous avez déclaré dans .h fichier et IBOutlate. Et la valeur sélectionnée à partir du sélecteur de vue est affiché dans l'étiquette à l'aide de l'étiquette.texte. Vous pouvez utiliser votre label ou quoi que ce soit où vous souhaitez afficher la valeur sélectionnée.
OriginalL'auteur Vaghani.Rahul
J'ai testé ce code avec 3 objets textfield.
Et a trouvé la solution parfaite à votre problème.
1) Prendre un UITextField.
2) Le délégué de la méthode de textfield modifier, set global textfield actuels textfield.
3) Sur le sélecteur de changement de valeur de la méthode, le texte de global textfield et ça va changer la valeur de certains textfield.
Code ci-dessous fonctionne correctement.
Profiter de codage.
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField et - (BOOL)textFieldShouldReturn:(UITextField *)textField sont délégué méthodes de UITextField. Il permet de gérer la fonctionnalité du clavier quand afficher le clavier. Dans ce cas vous avez juste cacher le clavier et le présent sélecteur.
Et pour sélecteur 4 premières méthodes sont délégué méthodes, qui assureront la gestion du sélecteur de toutes les fonctionnalités de base. c'est à dire Aucun. de lignes dans le sélecteur de données dans le sélecteur, que faire quand le sélecteur de valeur est le changement et d'autres choses.... Vous avez besoin de définir des délégués dans xib et .h fichier de-vue-contrôleur.
Merci Hemang. J'ai réussi à résoudre le problème en partie à l'aide de Natan R solution. Je vais essayer votre méthode dans ma prochaine application pour vous. Merci beaucoup! Reconnaissant de votre aide.
OriginalL'auteur Hemang
1.Utiliser une barre d'outils avec Fait barButtonItem,qui doit masquer l'pickerView.
2.Maintenant donnez votre textFields tagValues comme :
textFiled1.tag=100;
puis à l'aide de cette étiquette de valeur remplir votre pickerView tableau.3.Lorsque l'utilisateur sélectionne une Valeur de pickerView, dans son délégué méthode d'écriture
Je suppose que vous pouvez essayer le code vous-même, maintenant que vous avez l'essentiel de la solution.Bonne Chance!!
OriginalL'auteur iPhone Developer