11
UnWind Segue Benoit Capallere - Edecision

Unwind segue by benoit capallere

Embed Size (px)

Citation preview

Page 1: Unwind segue by benoit capallere

UnWind Segue

Benoit Capallere - Edecision

Page 2: Unwind segue by benoit capallere

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.

Page 3: Unwind segue by benoit capallere

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 »

Page 4: Unwind segue by benoit capallere

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.

Page 5: Unwind segue by benoit capallere

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

Page 6: Unwind segue by benoit capallere

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);}

Page 7: Unwind segue by benoit capallere

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"]) { }}

Page 8: Unwind segue by benoit capallere

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;}

Page 9: Unwind segue by benoit capallere

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

Page 10: Unwind segue by benoit capallere

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 ».

Page 11: Unwind segue by benoit capallere

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.