web-dev-qa-db-fra.com

IOS7, Segue et storyboards - Comment créer sans bouton?

J'ai actuellement une vue de connexion et une vue d'application, j'ai réussi à implémenter la validation sur la vue de connexion et je dois passer par programme à la vue d'application en cas de validation réussie.

Je comprends que je peux ajouter un segue au bouton de connexion, puis l'appeler par programme comme ça ...

[self performSegueWithIdentifier:@"LoginSegue" sender:sender];

Mais cela sera évidemment déclenché chaque fois que le bouton est cliqué (comme la séquence a été créée attachée au bouton). Je viens de lire que je devrais créer un bouton (et le cacher), puis faire un appel programmé à la séquence - cela semble un peu "mauvais".

Comment créer une séquence qui n'est attachée à aucun événement d'interface utilisateur particulier?

64
LiamB

Supprimer la séquence actuelle.

Attachez la séquence de l'origine contrôleur de vue à la destination (puis nommez-la).

Maintenant, votre méthode de pression de bouton devrait ressembler à ceci:

Objectif c:

- (IBAction)validateLogin:(id)sender {
    // validate login
    if (validLogin) {
        [self performSegueWithIdentifier:@"mySegue" sender:sender];
    }
}

Rapide:

@IBAction func validateLogin(sender: UIButton) {
    // validate login
    if validLogin {
        self.performSegueWithIdentifier("mySegue", sender:sender)
    }
}

La clé ici est que le contrôleur de vue d'origine doit être celui à partir duquel vous faites glisser pour créer la séquence, pas le bouton ou tout autre élément d'interface utilisateur.

enter image description here

Personnellement, je connecte TOUTES mes séquences de cette manière, même celles qui devraient se déclencher sur de simples pressions de bouton sans aucune validation ou logique derrière elles. Il est assez facile de l'appeler à partir de la méthode du bouton.

Et, je déclare généralement tous mes noms de séquence comme des chaînes constantes quelque part dans le projet.

138
nhgrif