web-dev-qa-db-fra.com

Comprendre performSegueWithIdentifier

Quelqu'un peut-il mieux connaître que je ne l'explique performSegueWithIdentifier:sender: pour moi? J'ai besoin de changer de vue (et de classe) et également de transmettre quelques NSStrings et ID à la classe de cette vue. Je me demandais si c'était possible avec performSegueWithIdentifier:sender:

Merci!

50
Simon Barkhuizen

Tout d'abord, vous devez avoir configuré la séquence dans votre storyboard et lui donner l'identifiant approprié. (Cliquez sur la séquence (panneau de gauche) puis sur Attributs (panneau de droite).

Vous pouvez ensuite le lier à des boutons ou à une sélection de lignes de tableau de votre storyboard, ou vous pouvez l'appeler dans le code à l'aide de performSegueWithIdentifier:sender:.

Après cela, votre contrôleur de vue recevra le prepareForSegue:sender: message. Vous remplacez cette méthode dans votre sous-classe de contrôleur de vue et pouvez configurer le contrôleur de vue cible comme suit:

TargetViewController *targetVC = (TargetViewController*)segue.destinationViewController;
targetVC.string1 = string1;

Et ainsi de suite. Le sender dans cette méthode sera l'objet que vous utilisez comme sender dans l'appel de méthode d'origine.

77
jrturton

La plupart des séquences sont lancées automatiquement à la suite d'une interaction de l'utilisateur. Par exemple, si vous avez une séquence qui est câblée d'un bouton à une scène dans un storyboard, lorsque la touche est activée, la séquence démarre automatiquement.

Parfois, il est logique de déclencher une séquence par programme - par exemple vous avez une scène High Scores qui s'affiche lorsque l'utilisateur gagne un tour d'une partie. Il n'y a aucun moyen d'exprimer le concept de gagner dans le storyboard lui-même, vous pouvez donc créer un enchaînement, lui attribuer un identifiant et invoquer -performSegueWithIdentifier:sender: lors de l'exécution.

L'autre méthode liée à la séquence sur UIViewController, -prepareForSegue:sender:, est la méthode que vous devez remplacer pour effectuer une personnalisation sur le contrôleur de vue de destination.

9
retainCount

Dans prepareForSegue:sender: vous avez la possibilité de configurer le destinationViewController: c'est là que vous lui transmettez les données dont il a besoin. Il en est question dans Cocoa Application Competencies for iOS .

3
user23743