dismissModalViewController隐藏状态栏后面的父视图

时间:2012-06-21 00:49:34

标签: iphone ios xcode ipad mfmailcomposeviewcontroller

我这里有一个非常奇怪的问题。我正在使用一个现有的模态视图控制器在ViewController上显示我的MFMailComposer ViewController,它放在导航栏中。

[self presentModalViewController:emailviewController animated:YES];

隐藏,我用......

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

    [self dismissModalViewControllerAnimated:YES];
}

一切正常但当我解除我的MailComposer时,原始视图控制器隐藏在状态栏后面。

我尝试使用setFrame方法将视图偏移量修改为10,但它无法正常工作。 (这在模态视图控制器出现和解除之前和之后都很累)

我试过暂时隐藏状态栏但没有工作。

我已经尝试过self.navigationcontroller presentmodalviewcontrolle,但这也没有用......

任何想法或建议都将受到高度赞赏

After dismissmodalviewcontroller called

编辑:大多数人都给我一个手动修改偏移的建议。 那不行。因为如果我在原始viewcontroller方法的viewDidLoad / viewWillapper中执行此操作,那么它会在当前模态视图控制器之前移动我的视图,而在我加载模态视图控制器之后它变得正常。

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

Changing offset results in this

1 个答案:

答案 0 :(得分:3)

尝试将其放入ViewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

最坏的情况是,如果仅在模态视图控制器被解除后才发生,则在.h中为afterFirstLaunch声明一个布尔值并将其放在viewDidAppear中:

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