-3
votes

Effectuer la Segue avec préparer une fois la vérification de validation

J'ai une forme qui doit être validée avant d'effectuer une SEGUE et d'envoyer également les données au contrôleur d'affichage suivant. Pour le moment, je vérifie simplement pour voir si tous les champs de texte sont remplis:

override func prepare(for segue: UIStoryboardSegue, sender: Any?){
    if segue.identifier == "mainUse"{
        let vc = segue.destination as! mainUseController
    }
}


5 commentaires

Vous n'appelez pas directement préparer (pour: expéditeur) , ce que vous faites (après votre test IFS), appelle ECRESSEGUEGUE (withIdidInder: expéditeur :) . Il appellera (après avoir vérifié si c'est autorisé, comme DoPaperformsegue (withIdidInder: Sender :) ) Le Préparez (pour: expéditeur) .


@Larme C'est ce que j'ai initialement fait, mais j'ai besoin de transmettre les détails sur le contrôleur d'affichage suivant et que la performance ne le fait pas.


Donc, votre question concerne la transmission de données au prochain verytroller via la Segue. C'est différent. Eh bien, dans votre code actuel, vous avez let VC , donc vc.someproperty = quelque chose .


Ouais, Sacssifie travaille comme prévu, mais j'ai besoin des entrées des champs de texte à envoyer sur le contrôleur d'affichage suivant.


Dupliqué possible de


4 Réponses :


0
votes

Utilisez le code suivant pour effectuer la Segue, vérifiez d'abord si toutes les conditions remplissent alors le message d'erreur d'affichage de Fire SEGUE d'ailleurs en conséquence.

@IBAction func startBtn(_ sender: Any) {
        if(idInput.text == "" || dob1Field.text == "" || dob2Field.text == "" || dob3Field.text == ""){
            print("no text")
            //Show alert message here
        }else{
            self.performSegue(withIdentifier: "mainUse", sender: self)
        }
    }


0 commentaires

0
votes

Préparez (pour Segue :) La méthode est appelée par le délégué de la vue Concontroller, vous devez éviter de mettre du code là-bas que vous devez déclencher.

Qu'est-ce que vous pouvez appeler à SEGUEING est SACSSEGUEGUE (SENDIIDIFICATION: SENDER :)

plus dans: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621413- Sacssifsgue

Mise en garde importante

N'oubliez pas que vos points de vente sont nuls lorsque vous souhaitez affecter ou transmettre des données au récepteur VC, créez une propriété forte et attribuez à cette valeur avant votre SEGUE, mais après l'instanciation VC. Les étiquettes, les textes, etc. ne recevront aucune donnée avant d'être dessinés.

Si vous avez besoin des entrées des champs de texte à envoyer sur le contrôleur d'affichage suivant, créez une propriété de placement et attribuez-la pendant le processus de segue.

Vous avez une bonne journée!


0 commentaires

1
votes

J'ai relié le bouton de démarrage sur le storyboard au VC et lui a donné un Identifiant MAYUSY car il va à la principaleecontroller

Eh bien, voici le problème: votre Segue semble être générée en faisant glisser à partir du bouton du contrôleur de visualisation de la destination, ne faites pas cela car la SEGUE sera effectuée quel que soit ce qui est implémenté dans le bouton Action. Au lieu de faire glisser du contrôleur d'affichage lui-même (mais pas du bouton) au contrôleur de la vue de destination:

Entrez la description de l'image ici Contrôle + Faites glisser du contrôleur d'affichage sur le contrôleur de destination

à ce stade, en appuyant sur le bouton ne vous naviguera pas sur le contrôleur de la vue de destination. . Ensuite, ce que vous devriez faire, c'est effectuer la Segue si les conditions sont remplies, en appelant ECRESSEGUEGE (WithIdidInder: Expéditeur :) Méthode: xxx


0 commentaires

0
votes
  @IBAction func startBtn(_ sender: Any) {
    if idInput.text?.isEmpty ?? true || dob1Field.text?.isEmpty ?? true || dob2Field.text?.isEmpty ?? true || dob3Fieldtext?.isEmpty ?? true { print("some textField is empty") return } 

    if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "YourIdentifier") as? NextViewController{
        if let navigator = navigationController {

            navigator.pushViewController(viewController, animated: true)
          }
    }
}

0 commentaires