iOS Passer des données en arrière en utilisant le déroulement pour se


Exemple

Contrairement à segue qui vous permet de transmettre des données "en avant" du contrôleur de vue actuel au contrôleur de vue de destination:

(VC1) -> (VC2)

En utilisant "dérouler", vous pouvez faire le contraire, passer des données de la destination ou du contrôleur de vue actuel à son contrôleur de vue présentateur:

(VC1) <- (VC2)

REMARQUE : faites attention à ce que l'utilisation de dérouler vous permette de transmettre les données en premier, puis le contrôleur de vue actuel (VC2) sera libéré.

Voici comment procéder:

Tout d'abord, vous devrez ajouter la déclaration suivante au contrôleur de vue de présentation (VC1), qui est le contrôleur de vue que vous souhaitez transmettre aux données:

@IBAction func unwindToPresentingViewController(segue:UIStoryboardSegue)

L'important est d'utiliser le préfixe unwind , cela "informe" Xcode qu'il s'agit d'une méthode de déroulage vous donnant la possibilité de l'utiliser également dans le storyboard.

Ensuite, vous devrez implémenter la méthode, elle ressemble presque à un segue réel:

@IBAction func unwindToPresentingViewController(segue:UIStoryboardSegue)
{
    if segue.identifier == "YourCustomIdentifer"
    {
        if let VC2 = segue.sourceViewController as? VC2
        {
            //    Your custom code in here to access VC2 class member
        }

Vous avez maintenant 2 options pour appeler les appels à la fin:

  1. Vous pouvez « coder en dur » invoquer le: self.performSegueWithIdentifier("YourCustomIdentifier", sender: self) qui fera le dérouleur pour vous à chaque fois que vous voulez performSegueWithIdentifier .
  2. Vous pouvez lier la méthode de déroulement en utilisant le storyboard à votre objet "Exit": ctrl + faites glisser le bouton que vous voulez appeler la méthode déroulante vers l'objet "Exit":

entrer la description de l'image ici

Relâchez et vous aurez la possibilité de choisir votre méthode de déroulement personnalisée:

entrer la description de l'image ici