ios - for - Incruste un UIViewController en un NavigationController utilizando segues
prepare for segue swift 4 (2)
Tengo un viewController al que normalmente se accede (con mayor frecuencia) mediante un segmento de inserción. Este viewController debe estar integrado en un UINavigationController. Por lo general, esto no es un problema. Push segue administra el empuje del viewController y, por lo tanto, el viewController tiene su UINavigationController.
Mi problema es que, en algunos casos, me gustaría presentar este mismo viewController utilizando un modo modal. Cuando hago esto, el viewController no está incrustado en un navigationController. ¿Hay alguna manera de hacer esto usando segues?
Sé que esto se puede hacer puramente en código sin segues creando un UINavigationController, configurando el rootView como viewController y luego presentándolo de manera modal. Eso se puede hacer usando un código como este:
MyViewController *viewController = [[MyViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self presentModalViewController:navController animated:YES];
Pero, ¿cómo hago esto mismo pero usando Segues?
Actualizar
Para mayor claridad, aquí hay un código para complementar cómo usé la respuesta aceptada en el método prepareForSegue.
Cuando se usa Segue Modal
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue destinationViewController] isEqualToString:@"Modal to MyVC"])
{
UINavigationController *nav = [segue destinationViewController];
MyViewController *vc = [nav topViewController];
//setup vc
}
}
Cuando se utiliza Push Segue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue destinationViewController] isEqualToString:@"Push to MyVC"])
{
MyViewController *vc = [segue destinationViewController];
//setup vc
}
}
En su Guión gráfico, puede incrustar un ViewController en un controlador de navegación seleccionando Ver controlador y luego seleccionando desde el menú en la parte superior Editor->Embed In->Navigation Controller
. Desde otro controlador de vista, puede controlar el arrastre a este controlador de navegación para configurar el segmento modal
. También puede controlar el arrastre al Controlador de vista original para configurar los segmentos a él sin el Controlador de navegación.