UIView muestra inmediatamente después de cargar NIB-file?

Intento agregar una UIView a mi aplicación. Funciona pero no como se esperaba. He definido el socialActionView en mi encabezado e hice un @synthesize en mi controller de vista.

El file nib se carga cuando el usuario presiona un button. Pensé que tenía que llamar al método addSubview para mostrar la vista. pero aparece incluso ii no lo hago.

si llamo al método addSubView de todos modos la aplicación se bloquea cuando carga la vista con el post "advertencia: no se puede restaurar el marco seleccionado anteriormente".

¿Alguien puede explicar lo que está pasando aquí? No entiendo eso.

- (IBAction)didTapOkSocialAction:(id)sender; { self.socialActionView = [[[NSBundle mainBundle] loadNibNamed:@"SocialActionViewController" owner:self options:nil] objectAtIndex:0]; //[self.view addSubview:socialActionView]; } 

EDITAR

en este caso, la solución fue configurar el propietario del file de mi SocialActionViewController.xib en ViewController.h. Todavía no sé cómo agregar una UIView desde NIB adjunta a otra class de controller de vista que el controller de vista donde se carga la vista.

Su socialActionView ya está vinculado al marcador de position de vista en su supervisión.

Entonces: ya está ahí (su reference ya está agregada como una subvista) pero es nil hasta que la cargues.

EDITAR: no está claro cómo tiene todo conectado allí, pero a partir de su información adicional a continuación, voy a tener una conjetura salvaje.

Prueba este código:

 - (IBAction)didTapOkSocialAction:(id)sender; { UIView *loadedView = [[[NSBundle mainBundle] loadNibNamed:@"SocialActionViewController" owner:self options:nil] objectAtIndex:0]; [self.view addSubview:loadedView]; } 

EDITAR: dado que desea cargar un controller de progtwig desde .xib, puede hacerlo de esta manera (posiblemente, el controller de visión se define en MyViewController.h, .m, .xib):

 MyViewController *myViewController; //as an ivar or a property in @interface myViewController = [[ViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 

entonces puede agregar su vista:

 [self.view addSubview: myViewController.view]; 

Si creo una UIView programáticamente como esta

 - (IBAction)didTapOkSocialAction:(id)sender; { UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)]; myView.backgroundColor = [UIColor whiteColor]; [self.view addSubview:myView]; [myView release]; } 

entonces el addSubView es inevitable. de lo contrario myView no aparecería. He probado eso. pero parece que hay un comportamiento diferente si UIView se carga desde una punta. se muestra de inmediato.

en la segunda testing eliminé la propiedad, solo quedaba la variable local.