首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IBOutlet UIButton SIGABRT

IBOutlet UIButton SIGABRT
EN

Stack Overflow用户
提问于 2019-01-31 10:31:46
回答 1查看 74关注 0票数 0

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

代码语言:javascript
运行
复制
@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
}



}

出口连接

SIGABRT误差

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-31 10:36:57

在显示您的MFMailComposeViewController.canSendMail()之前,您没有调用MFMailComposeViewController。来自canSendMail()文档:

在尝试显示邮件组合接口之前,应该调用此方法。如果它返回false,则不能显示邮件组合接口。

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

尝试:

代码语言:javascript
运行
复制
@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)
}

您检查是否可以显示MFMailComposerViewController,如果不能,您将打开Mail应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54458532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档