Dans mon contrôleur d'affichage, j'ai une vue de table dans laquelle je loge plusieurs cellules de la TableView. Certains ont des boutons Uitextfield, étiquettes, radio et chèques. Maintenant, j'ai fait toute la pièce montrant et entrant des données dans la cellule de TableView mais ne pouvant pas vérifier si un champ à gauche est vide.
Sur le bouton Cliquez dans mon contrôleur, j'ai besoin de vérifier cette validation si tous les champs sont non vides. Ou comment puis-je obtenir des données de chaque champ sur le bouton Cliquez sur le bouton.
Voici mon code de coordonnée de l'index cellulaire qui donnera une idée de DIFF Cell, je suis chargé. Comment puis-je valider si mon uitéxtfield est vide et que le bouton radio est vérifié.
3 Réponses :
Je pense que vous pouvez implémenter par exemple p> uitextfieldelegate code> pour suivre et mettre à jour vos données, pour
uableviewcell code> s avec
uitextfield code>. Mais cela vous oblige à écrire implémenter le délégué texte dans chacune des cellules où vous devez mettre à jour votre jeu de données. De plus, pour les contrôles de commutation et les cases à cocher, vous pouvez surveiller leur
ValueChageDanged Event.
En fait, c'est mon erreur, je n'ai pas mentionné où je dois mettre en œuvre la validation dans ma question, j'ai besoin de vérifier la validation sur le bouton Cliquez sur laquelle il navigue vers un autre contrôleur d'affichage. Si un champ de texte est laissé vide sur le bouton reste décochez Je dois afficher une erreur ou une fenêtre contextuelle. Fondamentalement, je dois éviter l'utilisateur de naviguer vers un autre contrôleur d'affichage jusqu'à ce que tous les dépôts soient remplis. Comment puis-je obtenir des données saisies dans Filelds sur le bouton Cliquez sur le bouton Filelds.
Votre bouton est-il une partie de UitailViewCell? Probablement pas, dans ce cas, il suffit de mettre à jour vos données comme mentionné dans la réponse et de valider ces données avant la navigation réelle.
BHAI: Merci d'avoir mis à jour la réponse, cela m'a vraiment aidé à une approche. Veuillez mettre la mise à jour avec une validation vide comme je l'ai fait dans ma réponse. Si cela fonctionne, je vais marquer votre réponse comme acceptée.
Vous aurez besoin de stocker ces données quelque part, spécialement parce que UitailView réutiliser ses cellules. Vous pourriez donc perdre ce qui a été saisi si l'utilisateur fait défiler. p>
En supposant que vous avez un tableau où provient les informations de chaque cellule, vous pouvez créer un drapeau qui explique si l'utilisateur a répondu à cette question. Sur Après cela, vous pouvez créer une méthode de validation qui doit être appelée après chaque entrée de cellule, en fonction de votre réseau local de champs + réponses. P> CellfornatDindexPath code> Vous vérifierez si le champ est vide et rechargez la réponse / l'état. p>
J'ai différentes classes TableViewCell pour chaque cellule où j'ai effectué le travail de sélection et de saisie de données et de leur montrer que chaque cellule a une fonctionnalité diiférente. Sur CellfornorTideDexPath Je peux vérifier si les champs sont vides ou non, mais la validation est nécessaire de définir le bouton Cliquez sur l'emplacement de la navigation terminée. J'ai besoin de voir maintenant comment puis-je accéder à la cellule de TableView / TableView pour vérifier s'il est vide sur le bouton Cliquez.
Toute autre validation comme type numérique et type de date que j'ai fait en classe de cellules. Je sais que ce n'est pas la bonne façon de le faire. Nous pouvons enregistrer nos valeurs à la classe modèle et utiliser la classe modèle au lieu de le faire. Faire de cette manière peut réaliser une défaillance de la validation lorsque nous faites défiler notre TableView, mais pour l'instant, cela fonctionne dans mon code. J'attends toujours de le faire d'une manière d'écrire. Je ne marquerai pas ma question comme répondu
au bouton Cliquez sur P>
@IBAction func nextButtonClicked(_ sender: Any) { let nameCell = self.tableView.cellForRow(at: IndexPath(row: 1, section: 0)) as? NameTableViewCell if (nameCell?.nameTextField.text!.isEmpty)! { Log.i("TextField is Empty---" ) } let startEndDateCell = self.tableView.cellForRow(at: IndexPath(row : 2,section : 0)) as? StartEnddateTableViewCell if((startEndDateCell?.startDateTextField.text!.isEmpty)! || (startEndDateCell?.endDateTextField.text!.isEmpty)!){ Log.i("Start And End Date Empty") } let amountCell = self.tableView.cellForRow(at: IndexPath(row : 3, section : 0))as? AmountTableViewCell if (amountCell?.amountTextField.text!.isEmpty)! { Log.i("Amount Cell Empty---") } else{ let vc = NextViewController(nibName: "NextViewController", bundle: nil) navigationController?.pushViewController(vc, animated: true ) } }