gpt4 book ai didi

IOS5 : How to invoke email from NSObject class

转载 作者:行者123 更新时间:2023-11-29 11:15:13 35 4
gpt4 key购买 nike

我的应用程序有一个通用类,每当从多个 NIB 中的任何一个单击“联系我们”时,它都会显示一个 actionSheet。

如果用户从 actionSheet 弹出窗口中选择“给我们发电子邮件”,我想从同一个公共(public)类中调用电子邮件方法。经过研究,我实现了这个:

-(void)SendEmail {

rootViewController = (UIViewController*)
[(AppDelegate*)[[UIApplication sharedApplication] delegate] viewController];

// compose
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = rootViewController;


//format message
NSArray *recipientsArray = [[NSArray alloc] initWithObjects:@"support@somename.com", nil];
[controller setToRecipients:recipientsArray];
[controller setSubject:[NSString stringWithFormat:@"A question about %@",string]];
[controller setMessageBody:outputMutString isHTML:YES];

//send
if (controller) [rootViewController presentModalViewController:controller animated:YES];

}

//didFinishWithResult

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

if (result == MFMailComposeResultSent) {
}
[rootViewController dismissModalViewControllerAnimated:YES];
}

这将启动一封新电子邮件,但是:

  1. didFinishWithResult 不起作用,因为模态视图在发送电子邮件或按下“取消”按钮后未被删除

  2. 我收到此警告:从不兼容类型“UIViewController *__strong”分配给“id”controller.mailComposeDelegate = rootViewController;

感谢帮助。

最佳答案

您需要将您的 rootViewController 设置为采用委托(delegate) MFMailComposeViewControllerDelegate

即在您的 RootViewController.h 文件中,将该部分添加到接口(interface)声明中,使其看起来类似于:

@interface RootViewController : UIViewController <MFMailComposeViewControllerDelegate>

关于IOS5 : How to invoke email from NSObject class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759180/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com