Unwind segue by benoit capallere

4,426 views
4,396 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,426
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Unwind segue by benoit capallere

  1. 1. UnWind Segue Benoit Capallere - Edecision
  2. 2. Les grandes lignes • Utilisation avec les storyboards • Disponible depuis iOS 6 • Va servir à faire des traitements sur le retour sur un précèdent contrôleur avec moins de code que pour un delegate.
  3. 3. Mise en place (1) • On a 2 contrôleurs avec : – un bouton pour passer du « rouge » au vert » – Un bouton pour passer du « vert » au « rouge »
  4. 4. Mise en place (2) • On rajoute la méthode suivante sur le contrôleur 1 « rouge » - (IBAction)backUnWindSegue:(UIStoryboardSegue *)segue { } • On Clic sur le bouton du contrôleur 2 « vert » pour lui associer cette méthode avec le bouton « Exit » du storyboard.
  5. 5. L’impact dans le storyboard • Dans « connexion inspector » on va retrouver la connexion vers l’action • Dans l’éditeur de scène on va retrouver notre Unwind Segue
  6. 6. Récupérer des données • On attribue un identifiant à l’unwind segue • On rajoute une @property au controleur 2 « vert » • On peut ainsi récupérer la valeur depuis le controleur 1 « rouge » - (IBAction)backUnWindSegue:(UIStoryboardSegue *)segue { View2Controller *controller = segue.sourceViewController; NSLog(@"%d",controller.value); }
  7. 7. Traitement avec l’Unwind segue • Comme pour une segue on pourra faire un traitement particulier lors du déclenchement avec « prepareForSegue » - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"BackUnwind"]) { } }
  8. 8. Condition sur l’unwind segue • On pourra conditionner son exécution avec la méthode « shouldPerformSegueWithIdentifier » sur le contrôleur 2 « vert ». - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { return NO; } • Si on a plusieurs segues il suffira de rajouter le test sur le nom de l’identifieur - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { if ([identifier isEqualToString:@"BackUnWind"]) { return YES; } return NO; }
  9. 9. Unwind à plusieurs niveaux (1) • Il va être possible de dépiler plusieurs contrôleurs d’un coup • 0n rajoute un contrôleur « bleu » à notre exemple
  10. 10. Unwind à plusieurs niveaux (2) • Sur le contrôleur « bleu » si on cherche à l’associer au bouton « Exit » on retrouvera la méthode « backUnWindSegue » qui est dans le contrôleur 1 « rouge », n’étant pas implémenté dans le contrôleur 2 « vert ». • On va donc directement retourner sur le contrôleur 1 « rouge ».
  11. 11. Comme pour une segue • On peut – Déclencher la segue dans le code avec l’identifier [self performSegueWithIdentifier:@"BackManualUnWind" sender:self]; – Faire une « Custom » segue pour mettre en place sa propre animation.

×