2017-07-08 1 views
0

Je suis nouveau dans Swift, et je n'arrive pas à comprendre comment permettre aux utilisateurs d'ajouter de nouveaux champs de texte sur UIView.Ajout de nouveaux UITextFields par les utilisateurs dans Swift

Par exemple, l'utilisateur appuie sur le signe plus et 3 nouveaux champs de texte apparaissent juste après les précédents. Les utilisateurs peuvent également les supprimer en un clic sur un autre bouton, qui apparaît près du nouveau textFields (le seul système simmilar que j'ai trouvé est présenté dans l'application Contacts standard, où vous pouvez ajouter de nouveaux numéros de téléphone, adresses, dates, etc.). Peut-être qu'à l'intérieur du signe "+" je devrais ajouter par programme ces textFields et contraintes pour eux, mais je n'arrive toujours pas à comprendre comment le faire. Des suggestions?

+0

Vous pouvez vous épargner la peine d'ajouter des contraintes en utilisant 'UIStackView'. Ensuite, ajoutez simplement les nouveaux champs de texte à cela. Je ne sais pas par cœur comment faire ça mais je vais y jeter un coup d'oeil. Cela semble amusant. – Marmelador

+0

https://stackoverflow.com/questions/1196436/uitextfield-in-uitableviewcell-adding-new-cells –

Répondre

0

Vous pouvez utiliser UIStackView ou UITableView pour réaliser cette fonctionnalité.

Pour créer un UITextField, utilisez l'extrait suivant.

let tf = UITextField() 
tf.borderStyle = .roundedRect 
tf.setContentHuggingPriority(UILayoutPriority(integerLiteral: 750), for: .horizontal) 
tf.setContentHuggingPriority(UILayoutPriority(integerLiteral: 750), for: .vertical) 

En utilisant StackView,

  1. Pour ajouter UITextField, créez un champ de texte et l'ajouter en utilisant la méthode func insertArrangedSubview(_ view: UIView, at stackIndex: Int). Plus d'informations peuvent être trouvées here. Pour supprimer tous les UITextFields, utilisez la méthode func removeArrangedSubview(_ view: UIView). Ici, vous devrez spécifier les vues que vous voulez supprimer. utilisez la propriété arrangedSubviews de UIStackView pour obtenir un tableau de toutes les sous-vues. Plus d'informations peuvent être trouvées here

En utilisant UITableView,

Vous aurez besoin d'un UITableViewCell configuré pour avoir une UITextField en elle. Une fois que vous avez la cellule, gardez simplement une variable qui garde un compte de tous les UITextFields Chaque fois que l'utilisateur appuie sur le bouton plus, ajoutez un TextField en utilisant func insertRows(at indexPaths: [IndexPath], with animation: UITableViewRowAnimation). N'OUBLIEZ PAS D'AUGMENTER VOTRE COMPTE. Plus d'informations peuvent être trouvées here. Vous pouvez également simplement augmenter la variable count et recharger la table.

Pour tout supprimer, vous pouvez utiliser func deleteRows(at indexPaths: [IndexPath], with animation: UITableViewRowAnimation) ou simplement définir la variable de comptage comme zéro et utiliser func reloadData(). Plus d'informations peuvent être trouvées here et here