从 UIActivityViewController 关闭邮件后 UINavigationBar 消失
Posted
技术标签:
【中文标题】从 UIActivityViewController 关闭邮件后 UINavigationBar 消失【英文标题】:UINavigationBar disappears after dismissing mail from UIActivityViewController 【发布时间】:2014-04-15 13:13:07 【问题描述】:我正在使用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;
【问题讨论】:
【参考方案1】:-(void)viewWillAppear:(BOOL)animated
[super viewWillAppear:YES];
[self.navigationController setNavigationBarHidden:NO];
【讨论】:
【参考方案2】:我通过在dismissViewController的完成块内将导航栏的隐藏属性设置为NO解决了这个问题。
[self dismissViewControllerAnimated:YES completion:^
self.navigationController.navigationBar.hidden = NO;
];
【讨论】:
【参考方案3】:哇,我也遇到了同样的问题——在我的UIActivityViewController
被解雇后,我的一个UIView
s 会“消失”并有一个不同的奇怪框架。然后我意识到这是因为我的消失视图的UIView
子类将translatesAutoresizingMaskIntoConstraints
设置为false
,而我没有使用Autolayout,所以它应该是true
:
self.setTranslatesAutoresizingMaskIntoConstraints(true)
简而言之,如果不是,请确保您的“消失”视图不会认为它正在使用约束。
【讨论】:
我正在使用自动布局。知道如何处理这个问题吗?【参考方案4】:你是否正确地展示了它? 取自文档:
当呈现视图控制器时,你必须使用 适用于当前设备的方法。在 iPad 上,您必须出示 弹出窗口中的视图控制器。在 iPhone 和 iPod touch 上,您必须 以模态方式呈现。
【讨论】:
presentModalViewController
在 ios 6.0 中已弃用,您应该像我一样使用 presentViewController:animated
以上是关于从 UIActivityViewController 关闭邮件后 UINavigationBar 消失的主要内容,如果未能解决你的问题,请参考以下文章
iOS 8.3:UIActivityViewController 显示无关的行
SwiftUI完美弹出UIActivityViewController(通过微信QQ或隔空投送分享)的应用分享窗口
SwiftUI完美弹出UIActivityViewController(通过微信QQ或隔空投送分享)的应用分享窗口