Pardonnez-moi pour la question du débutant .. Je sais que je peux passer à un autre écran (ViewController) comme celui-ci
self.performSegueWithIdentifier ("SecondViewController", sender: self)
mais je n'arrive pas à trouver où attribuer l'identifiant à mon deuxième écran, je viens de trouver l'ID de Storyboard, est-ce cela?
J'ai déjà essayé, seulement reçu un crash avec l'erreur suivante:
Receiver () n'a pas de transition avec l'identifiant 'SecondViewController'
Une idée? Merci
L'identificateur de segue est pas identique à , id de storyboard , identifiant de storyboard utilisé lorsque vous voulez créer un contrôleur de vue basé sur ce story-board spécifique - et il doit être unique, contrairement à l'identifiant de séquence -.
Si vous savez déjà comment créer une séquence, vous pouvez ignorer cette partie.
Dans Interface Builder, appuyez sur le bouton ctrl et faites glisser entre les deux contrôleurs de vue que vous souhaitez lier (assurez-vous que vous faites glisser le contrôleur de vue lui-même, et non sa vue principale). Tu devrais voir:
Choisissez le "Show" -par exemple-, la sortie devrait ressembler à ceci:
Comme indiqué ci-dessus, la flèche entourée du rectangle rouge est la transition.
Remarque supplémentaire: Si vous avez sélectionné l'option "Afficher", vous devez incorporer votre premier contrôleur de vue dans un contrôleur de navigation (sélectionnez votre premier contrôleur de vue -> Editeur -> Intégrer -> Contrôleur de navigation), la sortie devrait ressembler à:
Parce que "Show" signifie "pousser dans une pile de contrôleurs de navigation".
Sélectionnez la séquence, dans l'inspecteur d'attributs, vous verrez le champ de texte "Identifiant", c'est tout! assurez-vous d'insérer exactement le même nom que celui utilisé dans performSegueWithIdentifier
name__.
Si vous ne savez pas où trouver l'inspecteur d'attributs, en haut à droite, il ressemble à:
Pour ajouter plusieurs séquences à partir d'un contrôleur de vue, suivez le même processus (ctrl + glisser du premier contrôleur à l'autre View Controller), le résultat devrait ressembler à ceci:
Dans ce cas, vous pourriez être confronté au problème de savoir quelle séquence a été effectuée. Si la méthode prepare(for:sender:)
est la solution, vous pouvez effectuer la vérification en fonction de la propriété segue identifier
name__:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "firstSegueIdentifier") {
// ...
} else if (segue.identifier == "secondSegueIdentifier") {
//...
}
}
quel serait le nom que vous avez ajouté à la séquence dans le storyboard.
Dans votre code
self.performSegueWithIdentifier ("SecondViewController", sender: self)
la chaîne "SecondViewController" ressemble à l'identifiant du storyboard. Au même endroit, vous devez écrire l'identifiant de la division, pas l'identifiant du storyboard.
Suivez la capture d'écran et assignez le nom de l'identifiant de la division en cliquant sur le champ de la barre en haut à droite tu peux faire comme ça
self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)
Vous pouvez lancer viewController comme ceci:
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
Lorsque vous liez un contrôleur View à un autre contrôleur View du storyboard, vous devez attribuer un identifiant de séquence, c.-à-d. "SecondViewController" uniquement, votre code fonctionnera.
Sinon, vous pouvez également afficher un autre contrôleur de vue via l'ID de storyboard à l'aide de self.storyboard.instantiateViewControllerWithIdentifier ("// id de storyboard de ce contrôleur de vue"), puis utiliser le contrôleur de vue présent/afficher.