In questo caso è meglio giocare con l'appdelegate, ma dipende dal tipo di applicazione che si sta utilizzando.
creare un metodo in AppDelegate che è possibile chiamare da qualsiasi controller di vista
- (void)myMethod {
MyController *myController = [[MyController alloc] init];
[self.window.rootViewController presentModalViewController:myController animated:YES];
}
e per respingere questo controller è necessario creare azione sul viewcontroller stesso.
NOTA: è possibile avere solo 1 modelviewcontroller alla volta, quindi assicurarsi che modelviewcontroller sia un controller di navigazione in sé per impilare tutte le visualizzazioni in esso.
qualcosa di simile,
- (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];
}
}
fonte
2012-09-19 04:34:16
Per quanto riguarda la nota su cui è consentito un solo controller di visualizzazione modale alla volta, questo non è ciò che Apple dice (consultare "chain of modal view controller" all'indirizzo https://developer.apple.com/library/ios/featuredarticles/ ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html) – Clafou