2012-06-21 49 views
12

我在這裏有一個很奇怪的問題。我正在使用一個現有的模式視圖控制器來顯示我的MFMailComposer ViewController放置在導航欄中放置的ViewController之上。dismissModalViewController隱藏狀態欄後面的父視圖

[self presentModalViewController:emailviewController animated:YES];

躲起來,我用...

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

    [self dismissModalViewControllerAnimated:YES]; 
} 

一切工作正常,但是當我解僱我MailComposer原始視圖控制器隱藏狀態欄的後面。

我試圖修改視圖偏移10使用setFrame方法,但它沒有奏效。 (在模態視圖控制器呈現和解除之前和之後,這是累了)

我試圖通過暫時隱藏狀態欄,但沒有奏效。

我已經試過self.navigationcontroller presentmodalviewcontrolle但沒有工作太...

任何意見或建議,將不勝感激

After dismissmodalviewcontroller called

編輯:大多數的人給我建議手動修改偏移量。 那是行不通的。因爲如果我在原始視圖控制器方法的viewDidLoad/viewWillapper中執行此操作,那麼它會在我現有的模式視圖控制器之前移動我的視圖,而在我加載模態視圖控制器之後,它將變爲正常。

  • (無效)viewDidAppear:(BOOL)動畫{ 的CGRect幀= self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; }

Changing offset results in this

+0

您的原始視圖控制器有一個狀態欄設置爲隱藏或不是? – Ladislav

+0

nope ..我還沒有碰過狀態欄 –

+0

所以沒有狀態欄在模式視圖控制器以及原始視圖控制器中的變化? – Ladislav

回答

3

嘗試把這個在ViewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 

最壞的情況下,如果模態視圖控制器駁回後,才總是在發生,在聲明布爾的afterFirstLaunch .h並將其放在視圖中.DidAppear:

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

如果這不起作用,發佈代碼可能會有所幫助。兩個視圖都是使用Interface Builder創建的嗎?你如何呈現模態視圖控制器? – WolfLink

+0

有同樣的問題,但它真的沒有工作我 –

+0

在我看來,在視圖已經準備好後出現的視圖框架將變得非常討厭。視圖應該在出現之前正確定位。 – Darren