2011-11-19 1 views
12

Je conçois une application iOS à l'aide de la fonction storyboard de XCode 4.2. L'application dispose d'un écran de connexion qui prend un nom d'utilisateur et un mot de passe et dispose d'un bouton pour se connecter. Appuyer sur le bouton de connexion déclenche une pression sur un autre contrôleur de vue. Cependant, je veux que le seque attende que la connexion revienne avec succès avant de passer au contrôleur de vue suivant.iOS: Effectuez une séquence d'attente de connexion réussie

Je connais le prepareForSegue:sender: mais voici mon problème: l'appel de connexion est asynchrone. Je ne peux donc pas effectuer la connexion ici.

Y a-t-il quelque part autour de ça? Puis-je créer un seque dans le storyboard qui est seulement déclenché quand je le veux (par opposition à quand un bouton est cliqué)?

Répondre

37

Ok, je l'ai compris. J'avais défini une segue d'un UIButton au suivant UIViewController. Comme défini de cette manière, il n'y a aucun moyen d'exécuter conditionnellement le segue.

Au lieu de mettre le Segue sur le bouton, je fis un Segue de la première UIViewController à l'autre UIViewController. Ceci définit le segue, mais n'associe aucune action avec celui-ci. De là, je peux simplement appeler performSegueWithIdentifier:sender: quand je veux exécuter cette séquence (dans mon cas, lorsque la tâche asynchrone est terminée).

Le principal avantage de ceci pour moi est que IB maintient sa structure.

Grand merci à @cli_hlt pour m'avoir indiqué dans la bonne direction (+1).

5

Je ne sais pas s'il y a un moyen de IB pour effectuer une telle action (bien que je doute fort) donc je suggère d'utiliser

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender 

sur le contrôleur de vue lorsque votre signaux de connexion asynchrone succès .

+0

Oui Je l'ai vu, j'espérais juste qu'il y aurait un moyen de le faire où je n'aurais pas à casser le flux dans IB. – mtmurdock

1

Vous pouvez également appeler instantiateViewControllerWithIdentifier sur une instance de UIStoryBoard. Cela renverra une référence de contrôleur de vue à n'importe quel point de votre storyboard. De là, vous pouvez le présenter comme vous le souhaitez et il va ramasser le flux de votre storyboard.

+0

Cela ne s'afficherait pas dans IB si. J'essayais de maintenir l'organigramme sur le storyboard. Ce que vous suggérez ne montrerait pas un lien entre les deux contrôleurs dans IB. Si vous lisez ma réponse, vous verrez comment j'ai pu faire essentiellement la même chose que vous proposez en utilisant IB pour définir la section. Merci pour la contribution! +1 – mtmurdock

Questions connexes