web-dev-qa-db-fra.com

Swift: accédez au nouveau ViewController à l'aide du bouton

J'ai une application à vue unique qui se connecte pour analyser et vérifie les informations de connexion de l'utilisateur et met à jour un UILabel en disant "Oui, vous vous êtes connecté avec succès" - Maintenant, je veux qu'il navigue vers une nouvelle vue (qui sera la partie principale de l'application).

J'ai fait glisser un nouveau contrôleur de vue sur le storyboard et Ctrl-faites glisser le bouton et l'ai lié au nouveau contrôleur avec afficher. Cependant, au moment où je charge l'application et clique sur le bouton, elle passe directement à la nouvelle vue. J'en ai besoin pour y aller uniquement si la bonne partie de l'instruction if-else est déclenchée.

Est-ce que ça a du sens? Merci pour toute aide. très appréciée.

ÉDITER

L'instruction if est:

if usrEntered != "" && pwdEntered != "" {
        PFUser.logInWithUsernameInBackground(usrEntered, password:pwdEntered) {
            (user: PFUser!, error: NSError!) -> Void in
            if user != nil {
                self.messageLabel.text = "You have logged in";
            } else {
                self.messageLabel.text = "You are not registered";
            }
        }
    }

et son situé dans le fichier ViewController.Swift

12
DannieCoderBoi

Tout d'abord, comme je l'explique dans cette réponse , vous devez faire glisser la séquence depuis le UIViewController global vers le prochain UIViewController, c'est-à-dire que vous ne devez pas connecter spécifiquement le UIButton (ou tout IBOutlet d'ailleurs) au UIViewController suivant si la transition est conditionnelle:

storyboard segue

Vous devrez également attribuer un identifiant à la séquence. Pour ce faire, vous pouvez sélectionner la flèche de transition puis saisir un identifiant dans le panneau de droite:

segue identifier

Ensuite, pour effectuer la séquence réelle, utilisez la fonction performSegueWithIdentifier dans votre conditionnel, comme ceci:

if user != nil {
    self.messageLabel.text = "You have logged in";
    self.performSegueWithIdentifier("segueIdentifier", sender: self)
} else {
    self.messageLabel.text = "You are not registered";
}

où "segueIdentifier" est l'identifiant que vous avez attribué à votre séquence dans le storyboard.

52
Lyndsey Scott