J'utilise la méthode presentViewController:animated:completion:
pour accéder à un autre contrôleur de vue.
Ceci est mon code:
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
Ce code va à l'autre UIViewController
mais l'autre contrôleur est vide. J'ai toujours utilisé des storyboards, mais maintenant, j'ai besoin que cela soit fait en code.
Si vous utilisez un storyboard, vous ne devriez probablement pas utiliser alloc
et init
pour créer un nouveau contrôleur de vue. Au lieu de cela, regardez votre storyboard et trouvez le segue que vous voulez jouer; il devrait avoir un identifiant unique (sinon, vous pouvez en définir un dans la barre latérale droite).
Une fois que vous avez trouvé l'identifiant de cette séquence, envoyez à votre contrôleur current view un message -performSegueWithIdentifier:sender
:
[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];
Ainsi, le storyboard instanciera un AddTaskViewController et le présentera de la manière que vous avez définie pour cette séquence.
Si, par contre, vous n'utilisez pas de story-board, vous devez alors attribuer à votre AddTaskViewController une sorte d'interface utilisateur. Le moyen le plus courant consiste à initialiser le contrôleur avec un nib: au lieu d'appeler simplement init
, vous appelez -initWithNibName:bundle:
et fournissez le nom d'un fichier .xib contenant votre interface utilisateur add-task:
AddTaskViewController *add = [[AddTaskViewController alloc]
initWithNibName:@"AddTaskView" bundle:nil];
[self presentViewController:add animated:YES completion:nil];
(Il existe d’autres moyens (moins courants) d’associer une vue à votre nouveau contrôleur de vue, mais vous aurez probablement le moins de difficulté à travailler.)
Si vous utilisez Storyboard et que votre viewController "add" est dans le storyboard, définissez un identifiant pour votre viewcontroller "add" dans les paramètres afin que vous puissiez faire quelque chose comme ceci:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"NameOfYourStoryBoard"
bundle:nil];
AddTaskViewController *add =
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
[self presentViewController:add
animated:YES
completion:nil];
si vous n'avez pas votre "add" viewController dans le storyboard ou dans un fichier nib et que vous voulez tout créer par programme, appDocs dit:
Si vous ne pouvez pas définir vos vues dans un storyboard ou un fichier nib, substituez la méthode loadView pour instancier manuellement une hiérarchie de vue et affectez-la à la propriété de vue.
Vous devez définir l'identifiant du storyboard à partir de l'inspecteur d'identité du storyboard
AddTaskViewController *add=[self.storyboard instantiateViewControllerWithIdentifier:@"storyboard_id"];
[self presentViewController:add animated:YES completion:nil];
votre code :
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
ce code peut aller à l'autre contrôleur, mais vous obtenez un nouveau viewController, pas le contrôleur de votre storyboard, vous pouvez faire comme ceci:
AddTaskViewController *add = [self.storyboard instantiateViewControllerWithIdentifier:@"YourStoryboardID"];
[self presentViewController:add animated:YES completion:nil];
Le meilleur moyen est
AddTaskViewController * add = [self.storyboard instantiateViewControllerWithIdentifier:@"addID"];
[self presentViewController:add animated:YES completion:nil];
Essayez ce code:
[self.navigationController presentViewController:controller animated:YES completion:nil];
Essayez ce qui suit:
NextViewController *nextView = [self.storyboard instantiateViewControllerWithIdentifier:@"nextView"];
[self presentViewController:nextView animated:YES completion:NULL];