ios - ver - ¿Cómo puedo acceder a la vista de un controlador de vista principal desde un controlador de vista secundario?
no se puede obtener una vista previa debido a un error con el siguiente controlador de vista previa (5)
Tengo un controlador de vista principal que se encarga del dibujo para mi vista de Opengl ES 2D, y un administrador de botones de controlador de vista infantil que determina qué botones cargar y dibujar durante el lanzamiento.
Una vez que el usuario presiona uno de estos botones, se crea este controlador de vista y se supone que aparecerá su vista, pero la vista nunca se agrega, pero se ha probado que funciona. Aquí está mi código del controlador de vista principal:
buttonManager=[[ButtonManager alloc] init];
[self addChildViewController:buttonManager];
[self.view addSubview:buttonManager.view];
y aquí está mi código para lanzar esta vista:
-(void)launchStopDialog: (NSString*)stopName {
NSLog(@"stopdialog should be launched.");
if (stopDialogController == nil)
stopDialogController = [[StopDialogController alloc] initWithNibName:@"StopDialog" bundle:nil];
if (stopDialogController)
[stopDialogController presentWithSuperview:self.view.superview withStopName:stopName];
}
Ahora, después de que hayan matado al
self.parent
puedes usar
override func didMove(toParentViewController parent: UIViewController?)
{
}
Logro esto usando el enfoque de bloques c objetivo. Echa un vistazo a este tutorial de bloques. https://www.youtube.com/watch?v=FS4JAy1Wy3w
Nota para aquellos que usan iOS 5.x +
self parentViewController
ahora devuelve nil
. Ahora tendrá que utilizar self presentingViewController
para obtener el mismo resultado. Consulte esta publicación del blog para obtener más información y soluciones adicionales para actualizar su código base: http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/
Para acceder al controlador de vista principal, puede usar self.parentViewController
. Una vez que lo tenga, puede acceder a su vista simplemente usando su propiedad de view
eso es lo que funciono para mi
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString * segueName = segue.identifier;
if ([segueName isEqualToString: @"child-view"]) {
ChildViewController * childViewController = (ChildViewController *) [segue destinationViewController];
[self addChildViewController:childViewController];
}
}