web-dev-qa-db-fra.com

Xcode, où attribuer l'identifiant de séquence

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

8

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.

Ajout d'une séquence entre deux viewControllers:

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:

enter image description here

Choisissez le "Show" -par exemple-, la sortie devrait ressembler à ceci:

enter image description here

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 à:

enter image description here

Parce que "Show" signifie "pousser dans une pile de contrôleurs de navigation".

Attribution d'un identifiant pour la séquence:

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 performSegueWithIdentifiername__.

Si vous ne savez pas où trouver l'inspecteur d'attributs, en haut à droite, il ressemble à:

enter image description here


En outre:

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:

enter image description here

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 identifiername__:

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.

21
Ahmad F

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)

 enter image description here

1
Harish

Vous pouvez lancer viewController comme ceci: 

let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
0
Abuzar Manzoor

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.

0
Bhavuk Jain