2017-10-17 10 views
0

J'ai deux contrôleurs de vue, le premier contient un bouton et quand j'appuie sur ce bouton je veux qu'il vérifie le champ de texte que je dois voir s'il contient n'importe quelle valeur et s'il ne le fait pas. Je veux qu'une alerte apparaisse disant "entrer une valeur". S'il contient une valeur que je voudrais transférer au contrôleur de vue suivant. J'ai essayé plusieurs autres façons de le faire et aucune ne semble fonctionner. Toute information est appréciée, merci. (Nouveau à rapide et Stack Overflow Désolé)Comment effectuer un segue seulement si une condition est vraie

+0

Votre code semble raisonnable. Avez-vous mis un point d'arrêt et un seul est intervenu pour voir ce qui se passe? Une possibilité est que 'txtField.text' est' nil', donc l'exécution optionnelle ne se produit pas. Vous pouvez utiliser 'if (txtField.text ??" ") .isEmpty {' – Paulw11

+0

Vérifiez vos connexions de sortie –

+0

@ V-Dev Je ne sais pas vraiment ce que vous entendez par connexions de prise de contrôle. J'ai lu que cela pourrait être le problème. Mais quand je vais les vérifier, je ne sais pas vraiment ce que je cherche. [link] (https://imgur.com/a/ozU4q) Voici un imgur de chaque prise. S'il vous plaît, regardez-les si vous le pouvez. Je vous remercie. –

Répondre

0

Votre raisonnement est correct. Vérifiez les points suivants pour vous assurer que votre code fonctionne:

  1. Vous avez un Segue de votre bouton à votre contrôleur de vue de destination .
  2. Votre identifiant segue est segue1 comme dans votre code. Votre isEmpty fonctionne lorsque le UITextField est vide.

Si ceux-ci sont correctes, vous devez remplacer shouldPerformSegue(withIdentifier:sender:) comme vous l'avez fait, mais vous pouvez améliorer le code et ajouter l'alerte en procédant comme suit:

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { 

    if identifier == "segue1" { 
     if txtField.text?.isEmpty { 
      let alertController = UIAlertController(
       title: "Alert", 
       message: "Input value", 
       preferredStyle: .alert 
      ) 

      present(alertController, animated: true, completion: nil) 
      return false 
     } 
    } 

    return true 
} 

Pour plus d'informations sur la façon d'utiliser UIAlertController vérifier la Documentation

+0

J'ai essayé Cela semble toujours être la même erreur. Thread 1: signal sigabrt dans la classe appdelegate uiresponder uiapplicationdelegate. Je ne comprends pas vraiment cette erreur et pourquoi elle est causée. Avez-vous des informations sur cette erreur? –

+0

vous devrez partager votre 'AppDelegate' et la pile d'erreur complète afin que nous puissions aider plus – jvrmed

+0

J'ai deux images je crois qu'ils sont l'information nécessaire. Si vous pouvez obtenir des informations et éventuellement obtenir une solution qui serait incroyable. [link] (https://imgur.com/a/sgBdp) Merci. –