44 votes

Comment changer de vue de manière programmatique dans un ViewController ? (XCode iPhone)

Je me débats avec cette question depuis un certain temps, et je n'ai jamais réussi à obtenir une réponse directe.

Toute aide est appréciée !

87voto

CmdSft Points 1210

Si vous êtes dans un contrôleur de navigation :

ViewController *viewController = [[ViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];

ou si vous voulez simplement présenter un nouveau point de vue :

ViewController *viewController = [[ViewController alloc] init];    
[self presentViewController:viewController animated:YES completion:nil];

33voto

sree_achu Points 181

Si vous voulez présenter une nouvelle vue dans le même storyboard,

Dans CurrentViewController.m,

#import "YourViewController.h"

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
YourViewController *viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifier"];
[self presentViewController:viewController animated:YES completion:nil];

Pour définir l'identifiant d'un contrôleur de vue, Ouvrez MainStoryBoard.storyboard. Sélectionnez YourViewController View-> Utilities -> ShowIdentityInspector. Là, vous pouvez spécifier l'identifiant.

17voto

Lukas Wiklund Points 465

Le site instantiateViewControllerWithIdentifier est le Storyboard ID .

NextViewController *NVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextViewController"];
[self presentViewController:NVC animated:YES completion:nil];

5voto

BlueAMG63 Points 11

Pour renvoyer le Viewcontroller appelé avec le code des réponses précédentes par CmdSft

    ViewController *viewController = [[ViewController alloc] init];    
    [self presentViewController:viewController animated:YES completion:nil];

vous pouvez utiliser

    [self dismissViewControllerAnimated:YES completion: nil];

2voto

Walter Schurter Points 311

Cela a marché pour moi :

NSTimer *switchTo = [NSTimer scheduledTimerWithTimeInterval:0.1
           target:selfselector:@selector(switchToTimer)userInfo:nil repeats:NO];

- (void) switchToTimer {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyViewControllerID"]; // Storyboard ID
[self presentViewController:vc animated:FALSE completion:nil];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X