Passer d'une vue à l'autre en objective-c sans la recharger

mat2403

Membre enregistré
7 Novembre 2017
1
0
40
Bonjour à tous,

Voici mon problème pour lequel je n'arrive pas à trouver de solution.

J'ai une application développée en objective C contenant 2 UIViewController.
Mon projet contient 2 classes chacune étant affectée à sa propre UIViewController.
Je souhaiterai, via un button, passer d'une vue à l'autre. J'ai tenté en faisant un lien via le storyboard (ctrl + glisser le bouton sur la vue). Mon problème est qu'avec cette méthode, la vue cible est rechargée à chaque fois (appelle à la fonction ViewDidLoad() ).
De plus, imaginons, que je sois sur ma vue 1, que j'en modifie le contenu (via des messages reçus ou d'autres boutons, ...), que j'aille sur ma vue 2, lorsque je retourne sur ma vue 1, tout est rechargé et je perds mes modifications.

J'ai tenté les bouts de code suivants :
NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"VC1"];
[vc view];​

ou

UINavigationController * nc = [storyboard instantiateViewControllerWithIdentifier:@"NC"];
[nc showViewController:vc sender:nil];
ou
[nc presentViewController:vc animated:true completion:nil];​

en vain.

Pour illustrer ce que je veux exactement, c'est le bouton "back" lorsqu'on utilise un NavigationController.

Je peux compléter si besoin de plus d'explications.

Je peux aussi mettre le code complet de mon projet simple pour illustrer.

Merci d'avance pour votre aide.
 
Si tu as appelé presentViewController:animated:completion: (de VC1 à VC2), utilises "dismiss" sur le VC2 quand tu appuies sur ton faux bouton Back.

Sinon, j'ai l'impression que lorsque tu passes de VC2 à VC1, tu crées un nouvel VC1, ce n'est pas le même que celui que tu avais précédemment.