Comment rejeter les deux ou plusieurs dismissModalViewController?
-
28-09-2019 - |
Question
Je dois rejeter les deux contrôleurs de vue modales, je sais comment faire apparaître deux ou plusieurs contrôleurs de vue
UINavigationController* navController = self.navigationController;
NSArray *array=[navController viewControllers];
UIViewController* controller = [navController.viewControllers objectAtIndex:0];
[navController popToViiewController:controller animated:YES];
Voici comment je peux naviguer revenir à ma première vue mais s'il y a deux ou plusieurs rejeter vue modale alors comment puis-je sauvegarder navigate
S'il vous plaît aidez-moi, Je vous remercie, Madan Mohan
La solution 4
UINavigationController* navController = self.navigationController;
NSArray *viewControllers=[navController viewControllers];
UIViewController* controller = [viewControllers objectAtIndex:0];
[navController popToViewController:controller animated:YES];
si vous définissez l'objet à l'index 0 dans le code ci-dessus sa va vous prendre à première vue qui est un contrôleur de vue poussoir.
1) Rootview ---> moodalview1 ---> moodalview2 ---> moodalview3 si vous utilisez le code ci-dessus vous être en vue wiil racine.
2) Rootview ---> Pushview1 ----> moodalview1 ---> moodalview2 -----> moodalview3. si vous utilisez le code ci-dessus, vous serez dans le pushView.
Autres conseils
De la documentation pour -[UIViewController dismissModalViewController]
:
Si vous présentez plusieurs vue modale les contrôleurs de suite, et ainsi construire une pile de vue modal contrôleurs, l'appel de cette méthode sur un vue contrôleur inférieur dans la pile congédie son point de vue enfant immédiat contrôleur et tous les contrôleurs de vue au-dessus de cet enfant sur la pile. Quand Dans ce cas, seul le plus en haut vue est rejeté de façon animée; les contrôleurs de vue intermédiaires sont simplement retirée de la pile. le de plus haut point de vue est rejeté en utilisant son style de transition modale, ce qui peut différer des styles utilisés par d'autres afficher les contrôleurs plus bas dans la pile.
Utilisez ce ci-dessous le code
[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];
J'utilise la méthode de l'électricité statique d'utilité ci-dessous pour simuler popToRootViewController pour une pile de modaux:
// Util.m
+ (void)popModalsToRootFrom:(UIViewController*)aVc {
if(aVc.parentViewController == nil) {
return;
}
else {
[Util popModalsToRootFrom:aVc.parentViewController]; // recursive call to this method
[aVc.parentViewController dismissModalViewControllerAnimated:NO];
}
}
Vous utilisez comme ceci:
[Util popModalsToRootFrom:aViewController];
Si vous voulez quelque chose de plus avancé, vous pouvez faire ceci:
+ (void)popModalsFrom:(UIViewController*)aVc popCount:(int)count {
if(aVc.parentViewController == nil || count == 0) {
return;
}
else {
[Util popModalsFrom:aVc.parentViewController popCount:count-1]; // recursive call to this method
[aVc.parentViewController dismissModalViewControllerAnimated:NO];
}
}
Ensuite, passer le nombre de modaux à la pop, ou tout simplement -1 pour faire apparaître tout le chemin à la racine.
Pour iOS 5
, le soutien de animation
== YES
(vues cacheront dans l'ordre) et le bloc completion
:
+ (void)dismissAllVCsForVC:(UIViewController *)VC animated:(BOOL)animated completion:(BPSimpleBlock)completion {
if (VC.presentedViewController == nil) {
if (completion) {
completion();
}
} else {
[BaseViewController dismissAllVCsForVC:VC.presentedViewController
animated:animated
completion:
^{
[VC dismissViewControllerAnimated:animated completion:completion];
}];
}
}