múltiples ViewControllers (containerView? childView? instancia de viewController?)

Necesito tener una nueva vista (w / ViewController) agregada sobre la parte superior de otra. El usuario interactúa con esta nueva vista por un time y luego quiero eliminarlo. En una versión anterior de Xcode, pude agregarla como una subvista. Ahora obtengo un error EXC_BAD_ACCESS.

No quiero la vista agregada como modal. Necesito ver el background original a través de la vista agregada. He leído mucho sobre las nuevas containerViews personalizadas, addChildView y presentView. No puedo ver que cualquiera de estas sea la respuesta clara.

Aquí está el código anterior que funcionó antes: acción en el ViewController principal:

-(IBAction)showWhiteView:(id)sender { WhiteViewController *whiteView = [[WhiteViewController alloc] initWithNibName:@"WhiteViewController" bundle:nil]; [self.view addSubview:whiteView.view]; } 

Acción en la vista agregada para eliminarlo:

 -(IBAction)removeView:(id)sender { [self.view removeFromSuperview]; } 

Gracias por tu ayuda.

Tal vez un EJEMPLO VISUAL ayude a explicar – Digamos que la vista principal es un océano, con olas y nubes animadas movidas controladas por MainView Controller. El usuario toca algo y quiero agregar un barco (WhiteView) a la vista principal. Quiero que el usuario interactúe con el barco: toque aquí, la vela se abre, toque allí las gotas de anclaje, etc. (necesita los methods del WhiteViewController). Finalmente, quiero quitar el barco del océano.

Gracias Tim – Nuevo código agregado:

 -(IBAction)showWhiteView:(id)sender { WhiteViewController *whiteView = [[WhiteViewController alloc] initWithNibName:@"WhiteViewController" bundle:nil]; [self addChildViewController:whiteView]; [whiteView didMoveToParentViewController:self]; [self.view addSubview:whiteView.view]; } 

y dentro del WhiteViewController para eliminar:

 -(IBAction)removeView:(id)sender { [self.view removeFromSuperview]; [self removeFromParentViewController]; } 

Espero cualquier sugerencia adicional para mejorar esto. ¡Gracias a todos!

Vea la respuesta aquí relacionada con la contención UIViewController. Elaboré un proyecto de ejemplo sobre contención UIViewController aquí: http://github.com/toolmanGitHub/stackedViewControllers

Espero que estas ayudas .“

Tim

lo que entendí de su pregunta es que desea agregar una subvista a una supervista y que debe ser interactuable por el usuario ¿verdad?

para que pueda hacerlo siguiendo los pasos.

1) Agregue una nueva vista a la xib.
2) lo hacen opaco, el set es alfa a less de uno (pero no a cero, depende de ti, de cuánta transparencia quieres)
3) agregue los componentes sobre él, y dentro -(IBAction)showWhiteView:(id)sender (en su caso) el siguiente código

 whiteView.frame = CGRectMake(55, 60, 200, 200); [UIView beginAnimations:@"" context:nil]; [UIView setAnimationDuration:.5]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES]; [self.view addSubview:whiteView]; 

Y para eliminarlo haga lo siguiente

 -(IBAction)removeView:(id)sender { [whiteView removeFromSuperview]; } 

No olvides conectar la vista recién agregada.

Pruébalo.