2012-09-19 10 views
5

¿Es posible 'pop' una vista desde cualquier punto en una aplicación iOS.Visualizando una vista modal desde cualquier lugar en el código

Por ejemplo, quiero que un evento active una vista deslizante (modal) y el evento puede suceder en cualquier momento, en cualquier pantalla de la aplicación.

Además, nos gustaría que esto sea algo que pueda incluirse en otros proyectos y preferiría que no tengan que hacer nada especial para estos proyectos (que no sea el cableado en el proyecto al que se hace referencia).

Respuesta

6

En este caso, es mejor jugar con el dispositivo delegado, pero depende del tipo de aplicación que esté utilizando.

crear un método en AppDelegate que se puede llamar desde cualquier controlador de vista

- (void)myMethod { 
    MyController *myController = [[MyController alloc] init]; 
    [self.window.rootViewController presentModalViewController:myController animated:YES]; 
} 

y para despedir a este controlador tiene que crear una acción en el propio viewcontroller.

NOTA: usted solo puede tener 1 modelviewcontroller a la vez, así que asegúrese de que su modeloviewcontroller sea un controlador de navegación en sí mismo para apilar todas sus vistas en él.

algo como esto,

- (void)myMethod { 
    MyController *myController = [[MyController alloc] init]; 
    if([self.window.rootViewController modalViewController]) { 
      [(UINavigationController *)self.window.rootViewController.modalViewController pushViewController:myController animated:YES]; 
    } else { 
      UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myController]; 
      [self.window.rootViewController presentModalViewController:navController animated:YES]; 
    } 
} 
+0

Con respecto a la nota de que se permite solo un controlador de vista modal a la vez, esto no es lo que dice Apple (ver "cadena de controladores de vista modal" en https://developer.apple.com/library/ios/featuredarticles/ ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html) – Clafou

0

Si desea que el modal para despedir a sí mismo (con un botón, tal vez?) Simplemente llama:

[self dismissViewControllerAnimated:YES completion:NULL]; 

Esto enviará automáticamente a la vista controlador, que está representada y descartar el controlador de vista modal.

Cuestiones relacionadas