从UIActivityViewController中解除邮件后,UINavigationBar消失

时间:2014-04-15 13:13:08

标签: ios uinavigationcontroller uinavigationbar uiactivityviewcontroller

我使用UIActivityViewController显示电子邮件和消息的共享功能,但是如果我在弹出的视图控制器中取消邮件,则呈现视图控制器的导航栏就会消失。我只在方法中执行此操作以显示UIActivityViewController

UIActivityViewController *shareController = [[UIActivityViewController alloc] initWithActivityItems:@[UIActivityTypeMail, UIActivityTypeMessage] applicationActivities:nil];
shareController.excludedActivityTypes = @[UIActivityTypePostToTwitter, UIActivityTypeCopyToPasteboard];

[self.navigationController presentViewController:shareController animated:YES completion:nil];

在viewWillAppear中,我有:

-(void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:YES];
  self.navigationController.navigationBar.hidden = NO;
}

4 个答案:

答案 0 :(得分:1)

-(void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:YES];
  [self.navigationController setNavigationBarHidden:NO];
}

答案 1 :(得分:1)

我通过在dismissViewController的完成块内将导航栏的hidden属性设置为NO来解决了这个问题。

[self dismissViewControllerAnimated:YES completion:^{
    self.navigationController.navigationBar.hidden = NO;
}];

答案 2 :(得分:0)

你是否正确呈现? 取自文档:

  

展示视图控制器时,必须使用   适用于当前设备的方法。在iPad上,你必须出席   弹出窗口中的视图控制器。在iPhone和iPod touch上,你必须   以模态呈现。

答案 3 :(得分:0)

哇我有同样的问题 - 在UIActivityViewController被解雇之后,我的UIView之一会“消失”并且有一个不同的奇怪框架。然后我意识到这是因为我的消失视图的UIView子类已将translatesAutoresizingMaskIntoConstraints设置为false,而我没有使用Autolayout,所以应该是true

self.setTranslatesAutoresizingMaskIntoConstraints(true)

简而言之,如果不是,请确保您的“消失”视图不会认为它正在使用约束。