2012-06-21 9 views
12

Ho un problema molto strano qui. Sto usando un controller di visualizzazione modale presente per visualizzare il mio MFMailComposer ViewController su un ViewController che è inserito in una barra di navigazione.dismissModalViewController Nasconde la vista genitore dietro la barra di stato

[self presentModalViewController:emailviewController animated:YES];

da nascondere, io uso ...

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

    [self dismissModalViewControllerAnimated:YES]; 
} 

Tutto funziona bene, ma quando ho respingere la mia MailComposer il controller della vista originale nasconde dietro la barra di stato.

Ho provato a modificare l'offset di vista per 10 utilizzando il metodo setFrame ma non ha funzionato. (questo è stanco prima e dopo che il controller della modal view è presentato e ignorato)

Ho provato nascondendo temporaneamente la barra di stato ma non ha funzionato.

Ho provato self.navigationcontroller presentmodalviewcontrolle ma che non ha funzionato troppo ...

Tutte le idee o suggerimenti sarebbe molto apprezzato

After dismissmodalviewcontroller called

cura: La maggior parte delle persone mi danno un suggerimento per modificare manualmente l'offset. Beh, questo non funziona. Perché se lo faccio nel mio viewDidLoad/viewWillapper del metodo viewcontroller originale, allora sposta la mia vista prima del controller della vista modale attuale mentre dopo aver caricato il controller della vista modale diventa normale.

  • (vuoto) viewDidAppear: (BOOL) animato { CGRect frame = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; }

Changing offset results in this

+0

La tua vista originale controlle r ha una barra di stato impostata su nascosto o no? – Ladislav

+0

no .. Non ho ancora toccato la barra di stato –

+0

Quindi nessuna barra di stato cambia nel controller della vista modale e nel controller di visualizzazione originale? – Ladislav

risposta

3

Prova a mettere questo in viewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 

peggiore dei casi, se è sempre accadendo solo dopo che il controller di vista modale è respinto, dichiarare un valore booleano per afterFirstLaunch nel .h e metti questo in viewDidAppear:

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

Se ciò non funziona, il codice di pubblicazione potrebbe essere d'aiuto. Entrambe le viste sono state realizzate utilizzando Interface Builder? Come stai presentando il controller di visualizzazione modale? – WolfLink

+0

hanno lo stesso problema, ma in realtà non mi ha funzionato. –

+0

Mi sembra che spostando la cornice della vista dopo che la vista è già pronta, sembrerà molto sgradevole. La vista dovrebbe essere posizionata correttamente prima che appaia. – Darren

Problemi correlati