Je viens d'installer Xcode 4.5 pour le support iOS6, et j'ai vu une nouvelle icône appelée «Exit» dans mon Storyboard, listée sous mes contrôleurs de vue avec «First Responder» etc. Une petite icône verte intitulée «Exit».
Je peux trouver quoi que ce soit dessus ni déterminer comment il peut être utilisé.
Quelqu'un sait quelque chose à ce sujet, comment ça marche, à quoi ça sert?
iphone
objective-c
xcode
ipad
storyboard
Josh Kahane
la source
la source
Réponses:
C'est ce qu'on appelle un " Unwind Segue ". Malheureusement, il n'y a pas de documentation à ce sujet jusqu'à présent, sauf une brève mention sur la liste des nouvelles fonctionnalités de XCode 4.5 qui indique:
La bonne nouvelle est qu'il y a une session de la WWDC 2012 expliquant ces créatures (entre autres).
Vous pouvez simplement vous connecter au centre de développement iOS d'Apple avec les détails de votre compte de développeur, puis accéder à la page des vidéos de la WWDC 2012 et regarder «Adopting Storyboard in your App» (il est cinquième à partir du haut) La discussion sur les segments de déroulement commence à 37:20 .
Mise à jour: Voici quelques informations supplémentaires sur le sujet dans la documentation d'Apple
(Depuis docset iOS6> Général> Mise en route)
Et voici un bel exemple de la façon dont vous pouvez en implémenter un
Une autre mise à jour:
Voici une note technique d'Apple à ce sujet.
la source
exit
bouton en sélectionnant la méthode que vous souhaitez appeler. Vous pouvez trouver un exemple ici (j'ai également mis à jour ma réponse pour inclure l'exemple)Imaginez que vous ayez une séquence de vues dans votre storyboard:
A -> ... -> Z
Vous souhaitez afficher un bouton
Z
qui permet à l'utilisateur de revenir àA
.Donc, ce que vous devez faire est de donner à la vue que vous voulez revenir complètement, dans ce cas
A
, une méthode d'instance qui est marquée commeIBAction
et prend dans un seul paramètre de typeUIStoryboardSegue *
. Le nom de la méthode et de la variable n'a pas d'importance. Ce que vous faites dans l'implémentation n'a pas non plus d'importance. Voici un exemple:Obj-C: Interface de
In
A
(pasZ
de):Dans
A
la mise en œuvre de (pasZ
de):Swift:
Dans
A
la source (et non dansZ
les):Maintenant, dans votre storyboard, controlfaites glisser d'un élément sur
Z
(IE, un bouton d'annulation) versZ
'sExit
. Il parcourra toutes les vues plus haut dans la hiérarchie des vues qui ont unIBAction
qui n'accepte qu'une seuleUIStoryboardSegue *
comme action et les répertorie parmi lesquelles vous pouvez choisir.J'espère que cela a été plus simple et utile que les réponses existantes. J'ai trouvé que ce lien était particulièrement utile, donc s'il y a un détail sur lequel vous êtes encore flou après avoir lu ma réponse, cela peut peut-être vous aider (j'ai essayé de condenser toutes les informations utiles de ce long article en une réponse courte): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html
la source
Voir également Impossible de connecter Storyboard Unwind Segue qui clarifie les exigences pour donner vie à l'icône de sortie. Vous devez avoir, plus haut dans la hiérarchie du contrôleur de vue, une méthode qui est:
Marqué comme IBAction
Prend un paramètre qui est un UIStoryboardSegue *
Si ces deux conditions sont remplies, l'icône Quitter le verra et vous permettra de vous y connecter en faisant glisser le contrôle à partir d'un bouton dans le même contrôleur de vue.
J'ai également publié l'exemple le plus simple du monde ici:
https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard (corrigé le 12 juillet 2013)
Cela montre à quel point il est maintenant trivial de passer d' un contrôleur de vue présenté à un contrôleur de vue présenté, par opposition à tout le travail que vous deviez faire auparavant pour transmettre les informations dans les deux sens (les éléments du modèle avec un délégué et un protocole , qui peuvent désormais tous être supprimés).
la source
Il suffit d'ajouter une légère subtilité à la définition des exigences qui pourrait aider. Ceci est basé sur des expériences dans Xcode 4.6. J'ai trouvé que c'est spécifiquement et uniquement la déclaration (!) De la méthode qui permet la réponse de contrôle-glisser souhaitée de Xcode. Voici ce que j'ai trouvé être toutes les exigences:
IBAction
UIStoryboardSegue
*.M
section implémentation])..M
, à l'exception de la classe appdelegate. (Je n'ai vu aucune dépendance sur sa position dans la hiérarchie du contrôleur. Vous pouvez ajouter n'importe quel ancien fichier et le système semble agréger toutes les méthodes qui ont leUIStoryboardSegue
paramètre et les afficher dans le menu de l'icône Quitter.) Notez que le contrôle-glisser menu vous montrera même votre méthode si la méthode est dans la classe de la scène que vous manipulez dans l'éditeur de storyboard, mais elle apparaîtra sans deux-points et ne semble pas déclencher d'action à l'exécution.Exemple:
-(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;
la source