2016-04-03 5 views
0

私はいくつかの異なるアプリケーションで使用するカスタムフレームワーク(Swift)を作成しました。カスタムフレームワークからの迅速な電子メールが失敗する

私がこのフレームワークに入れた1つの機能は基本的な電子メールクライアントです。しかしとき

最初は完全に電子メールのページビューをロードし、すべてのフィールドが、私は(すなわちアドレス、BCC、件名、添付ファイルなど)を期待する方法を提示している:

のコードは以下の通りですが、それは現在、次の行動を描い私は送信またはキャンセルを押すと、アプリケーションがクラッシュします。実際には電子メールを送信します。私は "公共funcのmailComposeController(コントローラ:MFMailComposeViewController、didFinishWithResult結果:MFMailComposeResult、エラー:NSError?)"に印刷物を置いたことがあります。

以下のコードを参照してください:

枠組み

import UIKit 
import MessageUI 


public class Framework_Email : NSObject, MFMailComposeViewControllerDelegate{ 

    var picker : MFMailComposeViewController! 

    public var EmailSubject : String = "" 
    public var EmailMessage : String = "" 
    public var EmailAddress : [String] = [] 
    public var EmailBlindAddress : [String] = [] 
    public var EmailAttachment : [NSDictionary] = [] 

    public func SendEmail(View : UIViewController) 
    { 
     picker = MFMailComposeViewController() 
     picker.mailComposeDelegate = self 
     picker.setToRecipients(EmailAddress) 
     picker.setSubject(EmailSubject) 
     picker.setMessageBody(EmailMessage, isHTML: false) 
     picker.setBccRecipients(EmailBlindAddress) 

     for temp in EmailAttachment 
     { 
      picker.addAttachmentData(temp["Data"] as! NSData, mimeType: temp["Type"] as! String, fileName: temp["Name"]as! String) 
     } 
     View.presentViewController(picker, animated: true, completion: nil) 
    } 

    public func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result:  MFMailComposeResult, error: NSError?) { 
     print("Im Here!!!!!") //This is never seen in the output 
     picker.dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

を、私は、これは動作しません、なぜ誰もがお勧めできます私のメインアプリビューコントローラで、次の

let EmailClient : Framework_Email = Framework_Email() 
EmailClient.EmailAddress = ["[email protected]"] 
EmailClient.EmailMessage = "Email Message" 
EmailClient.EmailSubject = "Email Subject" 
EmailClient.EmailBlindAddress = ["[email protected]"] 
EmailClient.SendEmail(self) 

でそれを呼び出します?

おかげ

答えて

0

ではなく、ピッカーのあなたの方法の使用を却下コントローラで:

public func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
print("Im Here!!!!!") //This is never seen in the output 
controller.dismissViewControllerAnimated(true, completion: nil) 
} 
+0

こんにちは、アイブ氏は、私が実行しているXcode向けていないことと違いはありません –

+0

を試してみましたが、多分問題は、あなたのビューコントローラを置くということですここに。あなたのViewControllerをメールコンポーザの代理人として実装し、そこにdidFinishWithResultを実装してみてください。 – eMKa

関連する問題