Frage

Ich brauche die beiden modal View-Controller zu entlassen, ich weiß, wie Pop zwei oder mehr View-Controller

        UINavigationController* navController = self.navigationController;
    NSArray *array=[navController viewControllers];
    UIViewController* controller = [navController.viewControllers objectAtIndex:0];
    [navController popToViiewController:controller animated:YES];

Das ist, wie ich zu meinem ersten Blick zurück navigieren kann, aber wenn es zwei oder mehr modale Ansicht entlassen wie kann ich dann navigate zurück

Bitte helfen Sie mir, Vielen Dank, Madan Mohan

War es hilfreich?

Lösung 4

UINavigationController* navController = self.navigationController;
NSArray *viewControllers=[navController viewControllers];
UIViewController* controller = [viewControllers objectAtIndex:0];
[navController popToViewController:controller animated:YES];

Wenn Sie das Objekt bei Index 0 im obigen Code festgelegt seine gonna Sie auf dem ersten Blick, die ein Push-View-Controller ist.

1) RootView ---> moodalview1 ---> moodalview2 ---> moodalview3, wenn Sie über Code verwenden, dann wiil Sie in Stammansicht sein.

2) RootView ---> Pushview1 ----> moodalview1 ---> moodalview2 -----> moodalview3. wenn Sie über Code verwenden, werden Sie in der pushview sein.

Andere Tipps

Von der Dokumentation für -[UIViewController dismissModalViewController]:

  

Wenn Sie präsentieren mehrere modale Ansicht   Controller in Aufeinanderfolge und damit   einen Stapel von modaler Ansicht bauen   Controller, ruft diese Methode auf ein   View-Controller niedriger in dem Stapel   entlässt seinen unmittelbares Kind Blick   Controller und alle Ansicht-Controller   über dem Kind auf dem Stapel. Wann   dies geschieht, nur die meisten Top-Ansicht   wird in einer animierten Art und Weise entlassen;   beliebige Zwischensicht Controller sind   einfach aus dem Stapel entfernt. Das   meist Top-Ansicht wird zurückgewiesen seine Verwendung   modal Übergangsstil, die gegebenen   unterscheiden sich von den von anderen verwendeten Arten   View-Controller senken im Stapel.

Mit diesem Code unten

[[[self presentingViewController] presentingViewController]  dismissModalViewControllerAnimated:YES];

Ich verwende die folgende Dienstprogramm statische Methode popToRootViewController für einen Stapel von Modalverben zu simulieren:

// 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];
    }
}

Sie verwenden es wie folgt aus:

[Util popModalsToRootFrom:aViewController];

Wenn Sie etwas weiter fortgeschritten möchten, können Sie dies tun könnte:

+ (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];
    }
}

Dann die Anzahl der Modalverben passieren Pop, oder einfach nur -1 alle den Weg in die Wurzel Pop.

Für iOS 5, Unterstützung von animation == YES (Ansichten nacheinander verstecken) und completion Block:

+ (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];
         }];
     }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top