Il y a, effectivement, deux façons dont vous pouvez déclencher un enchaînement. La première est via une action sur un élément d'interface utilisateur dans Interface Builder, la seconde utilise performSegueWithIdentifier:sender:
dans votre code. Je dis « efficace », parce que sous les couvertures, lorsque la scène est chargé à partir du story-board, un gestionnaire d'action est configuré qui appelle finalement performSegueWithIdentifier:sender:
Lorsque performSegueWithIdentifier:sender:
est appelée, l'objet Segue est livré à la fonction prepareForSegue:sender:
du contrôleur de votre vue.
Dans le cas où l'enchaînement a été initié par une action sur un élément d'interface utilisateur puis l'expéditeur sera ce que l'élément d'interface utilisateur (à savoir si elle est une connexion à action sur un UIButton
alors le sender
sera l'instance UIButton
).
Si la séquence est initiée par votre code appelant performSegueWithIdentifier:sender:
, le sender
sera l'objet que vous aurez passé comme sender
. Cela pourrait être votre contrôleur de vue, un bouton, un tableau, n'importe quoi. Alors oui, si vous passez « Bonjour tout le monde » à performSegueWithIdentifier:sender:
la valeur sender
alors ce sera le sender
dans prepareForSegue:sender:
En termes de l'ordre des opérations:
performSegueWithIdentifier:sender
est appelé, que ce soit par votre code ou à la suite d'une action sur un élément d'interface utilisateur
- Si votre contrôleur de vue implémente
shouldPerformSegueWithIdentifier:sender:
, cette fonction est appelée. Si cette fonction retourne alors la false
Segue est annulé
- L'objet Segue et vue objet de destination contrôleur sont créés
- Si votre contrôleur de vue implémente
prepareForSegue:sender:
cette fonction est appelée.
- Une fois retourné
prepareForSegue:sender:
, le segue se termine.
Merci pour cela, il m'a sauvé un petit retour en arrière - je devais savoir si prepareForSegue serait encore appelé indépendamment de vérifier la valeur de retour de shouldPerformSegue. – MandisaW