Pregunta

Tengo que despedir a los dos controladores de vista modal, sé cómo hacer estallar dos o más controladores de vista

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

Esta es la forma en que puedo navegar de vuelta a la primera vista, pero si hay dos o más despedir vista modal entonces ¿cómo puedo volver navegar

Por favor, ayúdame, Gracias, Madan Mohan

¿Fue útil?

Solución 4

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

si establece el objeto en el índice 0 en el código anterior su va a lo lleve a primera vista que es un controlador de vista de empuje.

1) Rootview ---> moodalview1 ---> moodalview2 ---> moodalview3 si utiliza el código anterior, entonces wiil estar a la vista de la raíz.

2) Rootview ---> Pushview1 ----> moodalview1 ---> moodalview2 -----> moodalview3. si se utiliza por encima de código que va a estar en el PushView.

Otros consejos

A partir de los documentos de -[UIViewController dismissModalViewController]:

  

Si presenta varios vista modal   controladores en sucesión, y por lo tanto   construcción de una pila de vista modal   controladores, llamar a este método en una   controlador de vista inferior en la pila   despide a su visión inmediata del niño   controlador y todos los controladores de vista   por encima de ese niño en la pila. Cuando   esto sucede, sólo el más a la vista superior   es despedido de una manera animada;   cualquier controladores de vista intermedios son   simplemente retirado de la pila. los   más superficial de vista se descartó el uso de su   estilo de transición modal, lo que puede   diferir de los estilos utilizados por otra   controladores de vista inferior en la pila.

Utilice esta por debajo de código

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

utilizo el siguiente método estático utilidad para simular popToRootViewController para una pila de modales:

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

Se utiliza como esto:

[Util popModalsToRootFrom:aViewController];

Si quieres algo más avanzado, usted puede hacer esto:

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

A continuación, pasar el número de modales para hacer estallar, o simplemente -1 para que aparezca todo el camino hasta la raíz.

Para iOS 5, apoyo de animation == YES (vistas, se oculta en secuencia) y el bloque de 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];
         }];
     }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top