UITextField n'est pas la fin de l'édition lorsque le Bouton cliqué( délégué textFieldDidEndEditing )
J'ai deux textFields
sur l'écran et un Submit button
. Les entrées de l'utilisateur de détails dans le premier champ, puis la deuxième.
Mon exigence est la fin de la modification lorsque Submit button
est cliqué et imprimer les entrées de l'utilisateur dans ces textFields
.Je vais avoir des problèmes d'impression de la deuxième textField de leur valeur, comme le montage ne semble jamais de fin, quand l'utilisateur clique sur le Submit button
.
Voici mon code. Remercie de votre aide sur ce problème (j'ai ajouté le textfield délégué)
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
var firstName = ""
var lastName = ""
@IBOutlet var buttonUI: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func Submit(sender: UIButton) {
print(firstName)
print(lastName)
}
func textFieldDidEndEditing(textField: UITextField) {
switch textField.tag {
case 1:
firstName = textField.text!
print(firstName)
case 2:
lastName = textField.text!
print(lastName)
default: break
}
}
}
OriginalL'auteur Naishta | 2015-12-16
Vous devez vous connecter pour publier un commentaire.
Au sein de votre
ViewController
classe, pour chaque champ de texte, créer un @IBOutlet propriété par Ctrl-glisser de chaque champ de texte à partir de la table de montage séquentiel pour votre codeÉgalement créer un privé
UITextField
propriété pour contenir le (peut-être) actuel (le plus récemment utilisé) champ de texte.Remplacer la
viewDidLoad
méthode de votreUIViewController
sous-classe pour initialiser les délégués pour les deux "publics" champ de texte instancesEn outre, utiliser les deux
textFieldShouldReturn(...)
ettextFieldDidBeginEditing(...)
méthodes de laUITextFieldDelegate
de démissionner (actif) les champs de texte de statut est comme premiers intervenants et de mettre à jour lecurrentTextField
de référence, respectivement.Enfin, démissionner de toute éventuelle de courant de champ de texte en tant que premier intervenant, en cas
submit
est enfoncé dans le milieu de l'éditionAvec cela, votre vue-contrôleur devrait fonctionner comme prévu.
Pour résumer: après les ajouts et les modifications ci-dessus, votre
ViewController
classe devrait ressembler àvous avez besoin d'une
UITextView
instances qui peut communiquer avec votre point de vue; si non, votre texte sont "flottants par eux-mêmes" dans la vue de l'espace, sans contact avec votre contrôleur.génial merci pour l'explication détaillée, je vais essayer vos suggestions et accepter la réponse bientôt/ mise à jour vous si j'ai des questions
une option, cependant, serait de créer votre propre sous-classe de
UIView
, et de remplir une seule instance de cette classe avec votre 6 instances deUITextField
:s. De cette façon, vous auriez besoin d'une seule prise de storyboard -> contrôleur (affichage->contrôleur); l'une à partir de votre personnaliséUIView
sous-classe. Vous pouvez accéder à la 6UITextField
instances (au sein de votre classe personnalisée exemple) via votre interface de classe (méthodes appropriées pour ces). Ce sera un peu plus délicat pour leUITextField
délégués, mais sûrement quelques bonnes pratiques pour le développement de votre swift de codage.qui ont travaillé. Merci beaucoup pour ce descriptif répondre et de me faire comprendre le problème. J'ai branché les prises pour les champs de texte et la vérification de la dernière zone de texte pour rejeter l'édition qui est ce que je cherchais. Grand, na pas savoir SI une telle puissant quand je suis coincé:-)
OriginalL'auteur dfri
Qu'entendez-vous par
Pourquoi ne pas simplement lire les valeurs des objets textfield lorsque l'utilisateur appuie sur soumettre? Assurez-vous que vos points de vente et les délégués sont corrects.
Faire une action de votre bouton
Touch up inside
et en ce bouton vous de lire les valeurs:OriginalL'auteur Rashwan L