iphone - sola - quitar animaciones ios 11
Cómo realizar segue sin animación de transición (4)
Tengo una aplicación que comienza con un controlador de navegación. Este controlador de navegación puede abrir el controlador de vista modal:
- (void)openModalController:(id)sender
{
[self performSegueWithIdentifier:@"SegueIdentifier"];
}
Pero cuando el usuario abre una aplicación usando el esquema de url, me gustaría presentar la aplicación con el controlador modal abierto. Así que agregué algunos métodos y probé:
// Controller
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated]; // animated == NO in initial loading
if (_shouldOpenModalController) {
[self openModalController:nil];
}
}
- (void)setShouldOpenModalController:(BOOL)flag
{
_shouldOpenModalController = flag;
}
// AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions) {
UINavigationController *nc = (UINavigationController *)self.window.rootViewController;
MyViewController *c = (MyViewController *)[ns topViewController];
[c setShouldOpenModalController];
}
}
Pero aquí hay un problema: openModalController:
lleva a cabo la transición con la animación de transición que configuro en el guión gráfico. ¿Cómo se puede hacer sin animación? ¿Hay otro enfoque para esta tarea?
Duplica tu segue en Storyboard y dale a la segunda una ID diferente.
Luego puede cambiar la transición en la nueva versión.
Estoy usando este fragmento para solicitar autorización en viewDidLoad
:
[UIView setAnimationsEnabled:NO];
self.view.hidden = YES;
[self performSegueWithIdentifier:@"segue_auth" sender:self];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIView setAnimationsEnabled:YES];
self.view.hidden = NO;
});
Cuando está autorizado, la transición hacia atrás está animada como yo quiero.
Otra forma más que podemos
YourViewController *aYourViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"aYourViewControllerIdentifier"];
[self.navigationController pushViewController:aYourViewController animated:NO];
y agregue el @"aYourViewControllerIdentifier"
para ver el controlador en su guión gráfico.