Swift IBUIBUTTON SIGABRT

Swift IBUIBUTTON SIGABRT,swift,xcode,Swift,Xcode,我创建了一个IOS应用程序来发送电子邮件。我发现的问题是在IOS模拟器上测试我的应用程序。当我点击我的UIButton(IBOulet UIButton)时,我在AppDelegate.swift文件中收到SIGABRT Error突出显示类。下面没有显示错误代码。我还检查了视图控制器上的oulet连接,没有感叹号(“!”)或现有的重复项 @IBOutlet var Subject: UITextField! @IBOutlet var Body: UITextView! override

我创建了一个IOS应用程序来发送电子邮件。我发现的问题是在IOS模拟器上测试我的应用程序。当我点击我的UIButton(IBOulet UIButton)时,我在AppDelegate.swift文件中收到SIGABRT Error突出显示类。下面没有显示错误代码。我还检查了视图控制器上的oulet连接,没有感叹号(“!”)或现有的重复项

@IBOutlet var Subject: UITextField!

@IBOutlet var Body: UITextView!

override func viewDidLoad(){
super.viewDidLoad()

    Subject.delegate = self
    Body.delegate = self
}


@IBAction func SendEmail (_sender: Any)
{
    let picker = MFMailComposeViewController()
    picker.mailComposeDelegate = self

    if let subjectText = Subject.text {
        picker.setSubject(subjectText)
    }
    picker.setMessageBody(Body.text, isHTML: true)

    present(picker, animated: true, completion: nil)
}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    dismiss(animated: true, completion: nil)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()

    return true
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    Body.text = textView.text
    if text == "\n" {
        textView.resignFirstResponder()

        return false
    }
    return true
}



}


在演示
MFMailComposeViewController
之前,您没有调用
MFMailComposeViewController.canSendMail()
。从文件:

您应该在尝试显示邮件合成界面之前调用此方法。如果返回false,则不能显示邮件合成界面

如果您没有设置用于在设备上发送邮件的电子邮件地址,则
canSendMail()
将返回
false

尝试:


您检查是否可以显示
MFMailComposer视图控制器
,如果不能,您将打开一个
邮件
应用程序

在您的类中没有UIButton。另外,这些出口应该是弱的。谢谢你的答复。在我的代码中,我需要设置MFMailComposeViewController.canSendMail()?
@IBAction func SendEmail (_sender: Any)
{
    if(!MFMailComposeViewController.canSendMail()) {
        if let url = URL(string: "mailto:" + yourEmailAddress) {
            UIApplication.shared.openURL(url)
        }
    }

    let picker = MFMailComposeViewController()
    picker.mailComposeDelegate = self

    if let subjectText = Subject.text {
        picker.setSubject(subjectText)
    }
    picker.setMessageBody(Body.text, isHTML: true)
}