2012-10-12 2 views
4

J'ai environ 6 segues qui effectuent la même action dans la méthode prepareForSegue, cependant, je veux passer cette action pour mon se dérouler mais je ne peux pas comprendre comment déterminer si la séquence est passée ou non .Déterminez si segue est dérouler segue?

Toute aide serait appréciée.

+1

Puisque vous configurez vous-même les segments, pourquoi ne pas utiliser un test 'if' dans' prepareForSegue' pour ignorer l'appel de méthode supplémentaire? –

+0

La seule façon que je connaisse de le faire est si j'écris une instruction "if" qui vérifie les 6 identificateurs de segue sur lesquels je veux exécuter mon code. Je préfèrerais juste utiliser un "si pas se détendre segue puis bla". Pour autant que je sache, vous ne pouvez pas définir un identifiant pour un segue dérouler et il n'y a pas d'autre moyen de déterminer cela? –

+2

Que diriez-vous de régler le 'identifier' de la séquence de déroulement dans IB, puis en vérifiant' if (NO == [[identificateur de segue] isEqualToString: @ "Unwind"]) 'dans' prepareForSegue: 'de sorte que le code ne fonctionne que pour - Segues au vent. –

Répondre

16

Ah, peu importe, Robotic Cat a eu la réponse, ce qui donne fondamentalement au segue un identifiant. Je ne pouvais pas comprendre comment faire cela jusqu'à ce que je me rende compte que vous pouvez sélectionner des segues à partir du panneau déroulant sur la gauche du storyboard et définir l'identifiant à partir de là.

Merci!

+0

Battez-moi. Content que vous ayez trouvé le champ dans l'inspecteur des attributs. –

+0

Oui j'ai oublié comment je l'ai fait avant jusqu'à ce que j'ai vu cette réponse :-) – marsant

2

prepareForSegue n'est appelée que vers l'avant. Il n'est pas appelé quand vous vous détendez. Pour gérer les segmes de déroulement, vous devez connecter votre bouton de sortie à une méthode IBAction qui prend un segue en tant que paramètre. Cette méthode sera appelée lorsque vous vous détendre.

Ce post a plus de détails sur la façon de les utiliser.

+0

Je viens de le tester et Becca a raison. Segues se détendre sauter prepareForSegue donc dans ma description ci-dessus, c'est en quelque sorte un non-problème. Thx –

+2

Cela n'est vrai que pour 'segue.destinationViewController'. A partir des docs: _ "Dans les enchaînements déroulants et standards, la scène source peut implémenter prepareForSegue pour envoyer des informations à la destination." _ – Andreas

+0

Confirmé, vous pouvez vérifier unwindSegue.identifier pour dérouler des segues très bien dans prepareForSegue. –

0

Je suis assez nouveau pour SWIFT moi-même. Mais je crois qu'il y a un malentendu ici. Si vous ajoutez un segue vous-même, prepareForSegue est déclenché. Mais en cliquant sur le bouton 'retour' qui s'affiche automatiquement dans la barre de navigation, la fonction prepareForSegue n'est en fait pas déclenchée.