2012-06-21 13 views
12

Tengo un problema muy extraño aquí. Estoy usando un controlador de vista modal presente para mostrar mi ViewController de MFMailComposer en la parte superior de un ViewController que se coloca en una barra de navegación.dismissModalViewController Oculta la vista principal detrás de la barra de estado

[self presentModalViewController:emailviewController animated:YES];

para ocultar, yo uso ...

-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 

    [self dismissModalViewControllerAnimated:YES]; 
} 

Todo funciona bien, pero cuando me despido de mi MailComposer el controlador de vista original se esconde detrás de la barra de estado.

He intentado modificar el desplazamiento de vista por 10 utilizando el método setFrame, pero no funcionó. (Esto está cansado antes y después de que se presenta y descarta el controlador de vista modal)

He intentado ocultar la barra de estado temporalmente pero no funcionó.

He tratado presentmodalviewcontrolle self.navigationcontroller pero eso no trabajado demasiado ...

Cualquier idea o sugerencia sería muy apreciada

After dismissmodalviewcontroller called

editado: La mayoría de la gente que me dan una sugerencia para modificar el desplazamiento manualmente. Bueno, eso no funciona. Porque si hago eso en mi viewDidLoad/viewWillapper del método viewcontroller original entonces cambia mi vista antes del actual controlador de vista modal mientras que después de cargar el controlador de vista modal se vuelve normal.

  • (void) viewDidAppear: (BOOL) animada { marco CGRect = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; }

Changing offset results in this

+0

¿Su control de vista original ¿Tiene una barra de estado establecida en oculta o no? – Ladislav

+0

no .. Todavía no he tocado la barra de estado –

+0

¿No hay cambios en la barra de estado tanto en el controlador de vista modal como en el controlador de vista original? – Ladislav

Respuesta

3

Trate de poner esto en ViewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 

peor de los casos, si siempre está ocurriendo sólo después de que se desestimó el controlador de vista modal, declarar un valor lógico de afterFirstLaunch en el .h y poner esto en vistaDidAppear:

if(afterFirstLaunch){ 
     CGRect frame = self.navigationController.view.frame; 
     frame.origin.y = 20; 
     self.navigationController.view.frame = frame; 
} 
else { 
     afterFirstLaunch = true; 
} 
+0

Si eso no funciona, publicar el código puede ayudar. ¿Se realizan ambas vistas usando Interface Builder? ¿Cómo presentas el controlador de vista modal? – WolfLink

+0

tienen el mismo problema, pero realmente no funcionó –

+0

Me parece que cambiar el marco de vista después de que la vista ha aparecido todo va a parecer muy desagradable. La vista debe estar correctamente posicionada antes de que aparezca. – Darren

Cuestiones relacionadas