files - iOS: cómo comprobar si hay una vista modal presente
jquery filedownload documentation (4)
¿Está comprobando la presencia de un controlador de vista modal desde el controlador de vista principal? Si es así, puedes verificar la propiedad modalViewController de ese controlador de vista:
BOOL modalPresent = (self.modalViewController);
Si desea buscar un controlador de vista modal en particular, puede obtener el nombre de clase del controlador de vista modal de esta manera:
NSString *modalClassName = NSStringFromClass([self.modalViewController class]);
¿Hay alguna manera de verificar si una vista modal está presente? Me gustaría ejecutar un método solo si hay una vista modal presente. Además, si tengo varias vistas modales, hay una manera de verificar si una vista modal determinada está presente.
Uso el siguiente código para presentar y descartar vistas modales:
[self presentModalViewController:myModalView animated:YES];
[self dismissModalViewControllerAnimated:YES];
¡Gracias de antemano!
Saludos, Evan
PD. Mi vista modal tiene un controlador de vista, pero me gustaría comprobar si la vista modal está presente en una clase separada que se ejecuta de forma asíncrona.
Lo que funcionó para mí es lo siguiente:
// this is the trick: set parent view controller as application''s window root view controller
UIApplication.sharedApplication.delegate.window.rootViewController = viewController;
// assert no modal view is presented
XCTAssertNil(viewController.presentedViewController);
// simulate button tap which shows modal view controller
[viewController.deleteButton sendActionsForControlEvents:UIControlEventTouchUpInside];
// assert that modal view controller is presented
XCTAssertEqualObjects(viewController.presentedViewController.class, MyModalViewController.class);
Hasta donde lo probé, esto funciona para iOS7 y iOS8. Sin embargo, no probé en iOS6.
Puede verificar la presencia de un view controller
modal desde el controlador de view controller
principal
if ( [[self presentingViewController] presentingViewController] ) {
}
Puede verificar usando: self.presentedViewController
, que devuelve The view controller that is presented by this view controller, or one of its ancestors in the view controller hierarchy.