Changer de vue par code avec storyboard

Bonjour,


Comment faire pour changer de view controller par code en utilisant les storyboard ?


Merci

Réponses

  • On peut déclencher une transition (segue) définie dans un storyboard à  partir d'un contrôleur de vue en utilisant la méthode performSegueWithIdentifier:sender: de UIViewController.


  • Joanna CarterJoanna Carter Membre, Modérateur

    Qu'est-ce que tu veux dire "changer" ; le remplacer, montrer un autre au-dessus le premier, faire un push sur le stack d'un UINavigationController ?


  • Merci jpimbert.


    C' est que je fais avec cette méthode 



    [self performSegueWithIdentifier:@SignesViewController sender:self];

    mais ça ne marche pas.


  • Joanna, je veux dire juste afficher une autre vue.


  • LarmeLarme Membre
    décembre 2014 modifié #6

    Tu as créé le segue dans le StoryBoard ?


    Tu as un message d'erreur normalement avec ce code si le segue n'est pas en place.

    Ton code passe bien par cette ligne ? Je veux dire ton ViewController est bien mis comme étant de ta classe ?


  • Voila ce que je fais.


    Je cré un nouveau projet storyboard dans sur lequel il y un view controller. Dans ce view controller je met un bouton. Je le declare en IBOutlet et j' associe une action



    [self performSegueWithIdentifier:@SignesViewController sender:self]; 

    Ensuite je place un second view controller sur le storyboard. Je cré une classe .h et un .m (SignesViewController) que j' associe au view controller que je viens de créer. Je lance le tout et j' ai un message d' erreur.



    #import <UIKit/UIKit.h>

    #import "AppDelegate.h"

    int main(int argc, char * argv[])
    {
    @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
    }
  • Il nous faut le message dans la console. Là , que ça plante sur le main, c'est assez courant, mais cela n'indique pas de quelle erreur il s'agit.


    Pour simplifier cette " erreur "-là , il s'agit de UIApplication qui plante, mais en général, l'erreur est juste en amont.


    Je pense que ton erreur " réelle " est la suivante : TonViewController1 (<ClassMereDuViewController1: 0xZzZzZzZ>) has no segue with


    identifier 'SignesViewController'


     


    J'ai l'impression que tu n'as pas créé le segue au niveau du storyboard. Pour ce faire, un drag&drop à  partir du premier ViewController au second, et ensuite il faut nommer le segue.


  • Franchement la je commence à  en avoir marre. Je vais retourner aux vues avec xib si ça continue :-)


    C' est sûr je fais mal quelque chose mais je ne sais pas quoi.


    Je connecte le viewcontroller principal (le petit carré jaune à  gauche du orange et du vert) au second view controller que j' ai créé. Je choisis modal. Ensuite dans le second view controller je vois dans Presenting Segues modal connecté au view controller principal.


    Je clique sur le segue je l' appelle SignesViewController dans Storyboard Segue Identifier mais ça ne marche pas.


  • Je viens de réessayer avec un projet pure et neuf et la ça marche. Peut etre que ça vient du fait que le nouveau projet je l' ai créé uniquement pour iPhone alors que le projet où ça ne marche pas je l' ai créé pour universel iPhone et iPad.


    Je pense qu' il faut prociser dans quel storyboard ce trouve le view contrôler. je vais voir de ce coté là .


  • ça vient pas du fait de créé un projet juste pour iPhone ou universel. Je viens de créé un projet universel et ça marche aussi. Il doit y avoir un conflit quelque part.


  • C' est bon. ça marche. ça venait du fait que j' appelais le segue et le view controller "SignesViewController".


    J' ai appelé le segue "Signes" et le viewController "SignesViewController" et la ça marche.


    Merci à  vous :-)


Connectez-vous ou Inscrivez-vous pour répondre.