没有 UIViewController 的 iOS 邮件编辑器

标签 ios objective-c uiviewcontroller

我的应用程序在后台运行一些任务,然后最后显示一条警报,询问用户是否要通过电子邮件发送结果。

在应用程序的其他地方,我以应有的方式使用 MFMailComposeViewController (例如 here )。然而,在这里,由于我处于可能长时间运行的任务的完成 block 中,因此我没有引用可用于以下调用的 UIViewController 实例:

...
mailSendingController.mailComposeDelegate = self;
[self presentModalViewController:mailSendingController animated:YES];

我可能可以保留对调用该任务的 VC 的引用,但它可能会在任务完成之前被忽略。

我能做什么?创建一个假的隐藏 VC 只是为了作为 MFMailComposeViewController 的基础?有没有办法在没有底层 VC 的情况下显示 MFMailComposeViewController ?以某种方式使用当前位于堆栈顶部的 VC?...

欢迎任何想法。

最佳答案

首先,从 iOS6 [1] 开始,presentModalViewController:animated: 已被弃用。你应该使用 presentViewController:animated:completion: [2]

我只需获取应用程序的 Root View Controller ,然后使用它来呈现模态视图 Controller 。这样,无论如何它都会位于顶部,并且您知道 Root View Controller 始终在那里。

看看这个question有关访问应用程序的 Root View Controller 的一些提示。

此外,如果您要执行 GUI 操作,请确保返回主线程:

dispatch_async(dispatch_get_main_queue(), ^{
    // Present the VC here
});

祝你好运!

关于没有 UIViewController 的 iOS 邮件编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21155917/

相关文章:

iphone - 如何判断 UIView 何时获得焦点

ios - 查看 Controller : how to correctly initialize values that depend on NIB

ios - CCRenderTexture 吃掉了我的内存

ios - 添加到 UIStackView 后如何保留 UIButton 大小

ios - 由于空数组导致应用程序崩溃

ios - UIScrollView 和约束问题

ios - 使用 iOS Auto Layout 在 subview Controller 和它的父 View 之间建立约束

ios - iOS/iPhone 应用程序的(文件)格式是什么?

objective-c - 可以将 "sticky" header 添加到分组 TableView 吗?

iPhone - 更新表后 sqlite 不工作