En un Mot
Un détendez-vous segue peut être utilisé pour naviguer à travers pousser, modale ou liste enchaîne (comme si vous avez sauté l'élément de navigation de la barre de navigation, a fermé la fenêtre pop-over ou rejeté le modal présenté-vue-contrôleur). Sur le dessus de ce que vous pouvez réellement vous détendre à travers non seulement une, mais une série de push/modal/liste enchaîne, par exemple, "aller retour" de multiples étapes de votre hiérarchie de navigation avec un seul détendez-vous à l'action.
Lorsque vous effectuez une détendez-vous enchaîner, vous devez spécifier une action, qui est une méthode d'action de la vue-contrôleur que vous voulez pour se détendre.
- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
{
}
Le nom de cette méthode d'action est utilisé lorsque vous créez le vous détendre segue dans le storyboard. En outre, cette méthode est appelée juste avant le déroulement des enchaînements est effectuée. Vous pouvez obtenir la vue de source de contrôleur de l' UIStoryboardSegue
paramètre d'interagir avec l'affichage du contrôleur qui a initié la séquence (par exemple, pour obtenir les valeurs des propriétés d'un modal-vue-contrôleur). À cet égard, la méthode a une fonction similaire à celle de l' prepareForSegue:
méthode de UIViewController
.
Un Exemple
Laissez-nous avoir une table de montage avec une manette de navigation et de trois enfants de vue des contrôleurs:
Du Vert-Vue-Contrôleur, vous pouvez vous détendre (revenir) à Rouge-Vue-Contrôleur. Du Bleu, vous pourrez vous détendre au Vert ou au Rouge en passant par le Vert. Pour activer le déroulement, vous devez ajouter l'action spéciale méthodes de Rouge et de Vert, par exemple, ici est la méthode de l'action en Rouge:
@implementation RedViewController
- (IBAction)unwindToRed:(UIStoryboardSegue *)unwindSegue
{
}
@end
Après la méthode de l'action a été ajouté, vous pouvez définir le déroulement segue dans la table de montage séquentiel par contrôle en la faisant glisser vers l'icône de la Sortie. Nous voulons ici pour se détendre de Rouge, de Vert quand le bouton est pressé:
Vous devez sélectionner l'action qui est défini dans la vue contrôleur que vous souhaitez pour se détendre:
Vous pouvez également vous détendre au Rouge, du Bleu (qui est "à deux pas" dans la pile de navigation). La clé est de choisir le bon se détendre à l'action.
Avant le déroulement de la séquence est effectuée, la méthode d'action est appelé. Dans l'exemple, j'ai défini un déroulement des enchaînements de Rouge, de Vert et de Bleu. Nous pouvons accéder à la source de l'détendez-vous dans la méthode de l'action via le UIStoryboardSegue paramètre:
- (IBAction)unwindToRed:(UIStoryboardSegue *)unwindSegue
{
UIViewController* sourceViewController = unwindSegue.sourceViewController;
if ([sourceViewController isKindOfClass:[BlueViewController class]])
{
NSLog(@"Coming from BLUE!");
}
else if ([sourceViewController isKindOfClass:[GreenViewController class]])
{
NSLog(@"Coming from GREEN!");
}
}
Déroulement fonctionne aussi grâce à une combinaison de push/modal enchaîne. E. g. si j'ai ajouté un autre Jaune-vue-contrôleur avec un modal segue, on pouvait se détendre de Jaune à Rouge en une seule étape:
Déroulement de Code
Lorsque vous définissez un déroulement segue par contrôle en faisant glisser quelque chose à la Sortie symbole de une-vue-contrôleur, une nouvelle séquence s'affiche dans le plan du Document:
La sélection de la séquence et va les Attributs de l'Inspecteur de révèle le "Identifiant" de la propriété. L'utiliser pour donner un identifiant unique à votre segue:
Après cela, le déroulement des enchaînements peuvent être effectuées à partir du code, tout comme toute autre segue:
[self performSegueWithIdentifier:@"UnwindToRedSegueID" sender:self];