2016-04-03 13 views
0

我製作了一個自定義框架(Swift),我在幾個不同的應用程序中使用它。來自定製框架的Swift電子郵件失敗

我在這個框架中提供的一個功能是基本的電子郵件客戶端。

代碼低於但當前描繪以下行爲:(即地址,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

嗨,我已經試過了,並沒有什麼區別 –

+0

我沒有Xcode中運行,但也許問題是,你把你的視圖控制器這裏。嘗試實現您的ViewController作爲郵件編輯器的代理並在那裏實現didFinishWithResult。 – eMKa