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
}
}
4 Réponses :
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)
}
}
Qu'est-ce que vous pouvez appeler à SEGUEING est plus dans:
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621413- Sacssifsgue P>
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. p>
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. P>
Vous avez une bonne journée! P>
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 p>
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: p>
Contrôle kbd> + Faites glisser du contrôleur d'affichage sur le contrôleur de destination SUB> P>
à 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 :) code>Méthode: p>xxx pré> blockQuote>
@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)
}
}
}
Vous n'appelez pas directement
préparer (pour: expéditeur) code>, ce que vous faites (après votre test IFS), appelleECRESSEGUEGUE (withIdidInder: expéditeur :) code>. Il appellera (après avoir vérifié si c'est autorisé, commeDoPaperformsegue (withIdidInder: Sender :) code>) LePréparez (pour: expéditeur) code>.@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 code>, doncvc.someproperty = quelque chose code>.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