実機で取りあえず動くことを確認しました。
もっとスマートな書き方があると思いますが、参考にしてみてください。
swift
1import UIKit
2import MessageUI
3
4//呼ぶクラス
5class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
6
7 override func viewDidLoad() {
8 super.viewDidLoad()
9 Common.sendMail(self)
10 }
11
12 func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
13
14 switch result.rawValue {
15 case MFMailComposeResultCancelled.rawValue:
16 print("Email Send Cancelled")
17 break
18 case MFMailComposeResultSaved.rawValue:
19 print("Email Saved as a Draft")
20 break
21 case MFMailComposeResultSent.rawValue:
22 print("Email Sent Successfully")
23 break
24 case MFMailComposeResultFailed.rawValue:
25 print("Email Send Failed")
26 break
27 default:
28 break
29 }
30 dismissViewControllerAnimated(true, completion: nil)
31 }
32}
33
34// 呼ばれるクラス
35class Common:NSObject, MFMailComposeViewControllerDelegate {
36 class func sendMail<T: UIViewController where T: MFMailComposeViewControllerDelegate>(vc: T) {
37 if MFMailComposeViewController.canSendMail()==false {
38 print("Email Send Failed")
39 return
40 }
41
42 let mailViewController = MFMailComposeViewController()
43 mailViewController.mailComposeDelegate = vc
44 mailViewController.setSubject("エラー出ませんように")
45 let toRecipients = ["noerror_nolife@gmail.com"]
46 mailViewController.setToRecipients(toRecipients)
47 mailViewController.setMessageBody("", isHTML: false)
48 vc.presentViewController(mailViewController, animated: true, completion: nil)
49 }
50}
追加質問の回答
swift
1import UIKit
2import MessageUI
3
4//呼ぶクラス
5class ViewController: UIViewController {
6
7 // インスタンスとして保持
8 var common: Common!
9
10 override func viewDidLoad() {
11 super.viewDidLoad()
12 common = Common().sendMail(self)
13 }
14}
15
16// 呼ばれるクラス
17class Common:NSObject, MFMailComposeViewControllerDelegate {
18
19 var vc: UIViewController!
20
21 func sendMail(vc: UIViewController) -> Common? {
22 if MFMailComposeViewController.canSendMail()==false {
23 print("Email Send Failed")
24 return nil;
25 }
26
27 self.vc = vc
28 let mailViewController = MFMailComposeViewController()
29 mailViewController.mailComposeDelegate = self
30 mailViewController.setSubject("エラー出ませんように")
31 let toRecipients = ["noerror_nolife@gmail.com"]
32 mailViewController.setToRecipients(toRecipients)
33 mailViewController.setMessageBody("", isHTML: false)
34 vc.presentViewController(mailViewController, animated: true, completion: nil)
35 return self
36 }
37
38 func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
39
40 switch result.rawValue {
41 case MFMailComposeResultCancelled.rawValue:
42 print("Email Send Cancelled")
43 break
44 case MFMailComposeResultSaved.rawValue:
45 print("Email Saved as a Draft")
46 break
47 case MFMailComposeResultSent.rawValue:
48 print("Email Sent Successfully")
49 break
50 case MFMailComposeResultFailed.rawValue:
51 print("Email Send Failed")
52 break
53 default:
54 break
55 }
56 vc.dismissViewControllerAnimated(true, completion: nil)
57 }
58}
59
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/03 23:55
2016/06/04 00:26