在故事板中使用 MFMailComposeViewController 不起作用

发布于 2024-12-24 17:30:40 字数 200 浏览 2 评论 0原文

在故事板中,我可以设置从按钮到 UIViewController 的 Segue 并使其以模态方式显示。这很好用。但是,当我将故事板中的类从 UIViewController 更改为 MFMailComposeViewController 时,它根本不起作用。出现的只是顶部的导航栏,显示屏的其余部分填充为黑色。我采取了错误的方法吗?

In storyboard I can setup a segue from a button to a UIViewController and make it appear modally. This works fine. However when I change the class in storyboard from UIViewController to MFMailComposeViewController, it does not work at all. All that appears is a navigation bar at the top with the rest of the display being filled with black. Am I taking the wrong approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放低过去 2024-12-31 17:30:40

我在 ABPeoplePickerNavigationController 上遇到了类似的问题,而且我似乎也无法弄清楚问题是什么。您可以

  1. 回退到 IBAction 并自行创建 MFMailComposeViewController 实例并显示它。

  2. 如果您想继续使用故事板(我认为这是可取的),那么您可以创建一个包装类,在内部实例化 MFMailComposeViewController ,然后充当代理对象,从而传播 viewDid *** 和 viewWill*** - 包装类的方法,并在只读 view 属性中返回包装的 VC 视图...您得到想法。

I had a similar problem with ABPeoplePickerNavigationController and I could not seem to figure out what the problem was either. You can either

  1. Fall back to a IBAction and create the MFMailComposeViewController instance your self and display it.

  2. If you want to keep using Storyboards, which I think is desirable then you might create a wrapper-class that internally instantiates the MFMailComposeViewController and then functions as a proxy object and thus propagates viewDid*** and viewWill***-methods to the wrapped class and also returning the wrapped VC's view in a readonly view property... You get the idea.

陈年往事 2024-12-31 17:30:40

除了 Besi 的回答之外:

  1.  
  2.  
  3. 子类 MFMailComposeViewController 并覆盖 initWithCoder:方法。

示例:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    return [super init];
}

然后它将与故事板一起使用,但我认为故事板场景中的插座/标签/其他定义将不会应用(您必须在 prepareForSegue:sender: 方法中配置邮件编辑器)。

In addition to the answer by Besi:

  1.  
  2.  
  3. Subclass MFMailComposeViewController and override initWithCoder: method.

Example:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    return [super init];
}

Then it will work with storyboards, but I think your outlets / tags / other definitions from storyboard scene won't be applied (you have to configure mail composer inside your prepareForSegue:sender: method).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文