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

Était-ce utile?

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];
         }];
     }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top