2012-06-21 14 views
12

Mam tu bardzo dziwny problem. Używam obecnego modalnego kontrolera widoku, aby wyświetlić mój ViewMontroller MFMailComposer na górze ViewController, który jest umieszczony na pasku nawigacyjnym.dismissModalViewController Ukrywa widok rodzica za paskiem stanu

[self presentModalViewController:emailviewController animated:YES];

ukryć, używam ...

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

    [self dismissModalViewControllerAnimated:YES]; 
} 

Wszystko działa poprawnie, ale kiedy odwołać mój MailComposer oryginalny kontroler widok chowa się za pasku stanu.

Próbowałem zmodyfikować odsunięcie widoku o 10 przy użyciu metody setFrame, ale to nie zadziałało. (to jest zmęczone przed i po wyświetleniu i odrzuceniu kontrolera widoku modalnego)

Próbowałem przez chwilowe ukrywanie paska stanu, ale nie działało.

Próbowałem self.navigationController presentmodalviewcontrolle ale to nie działało zbyt ...

Wszelkie pomysły i sugestie będą bardzo mile widziane

After dismissmodalviewcontroller called

edycja: Większość ludzi daje mi sugestię ręcznego modyfikowania przesunięcia. Cóż, to nie działa. Ponieważ jeśli zrobię to w moim viewDidLoad/viewWillapper oryginalnej metody viewcontroller, to przesuwa mój widok przed aktualnym kontrolerem widoku modalnego, podczas gdy po załadowaniu modalnego kontrolera widoku staje się normalny.

  • (void) viewDidAppear (Bool) animowane { CGRect ramy = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; }

Changing offset results in this

+0

Czy Twój oryginalny widok kontroluje r Czy pasek stanu jest ustawiony na ukryty czy nie? – Ladislav

+0

nope .. Jeszcze nie dotknąłem paska stanu –

+0

Więc nie zmienia się pasek stanu w kontrolerze widoku modalnego, a także w oryginalnym kontroler widoku? – Ladislav

Odpowiedz

3

Spróbuj umieścić to w ViewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 

Najgorszy przypadek, jeśli jest ona zawsze dzieje się tylko po kontroler widok modalne zostaje odrzucona, zadeklarować wartość logiczną dla afterFirstLaunch w .h i umieść to w widokuDidAppear:

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

Jeśli to nie pomoże, może pomóc kod księgowania. Czy oba widoki są tworzone za pomocą narzędzia do tworzenia interfejsu? W jaki sposób prezentujesz kontroler widoku modalnego? – WolfLink

+0

mają ten sam problem, ale to mnie nie zadziałało –

+0

Wydaje mi się, że przesunięcie ramki widoku po tym, jak widok będzie gotowy, będzie wyglądać bardzo nieprzyjemnie. Widok powinien być odpowiednio ustawiony, zanim się pojawi. – Darren

Powiązane problemy