MFMailComposeViewController setToRecipients从设置textField附加字符串故障

时间:2016-05-26 04:54:02

标签: swift uitextfield segue mfmailcomposer

希望这是一个简单的问题?但我似乎无法理解它。

我的settingsViewController中有一个名为emailText的文本字段,我想设置默认的电子邮件收件人。

@IBOutlet weak var emailText: UITextField!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let shoppingListViewController = segue.destinationViewController as! ShoppingListViewController
    shoppingListViewController.emailString = ([emailText.text]!)
}

func textFieldShouldReturn(emailText: UITextField) -> Bool {
    emailText.resignFirstResponder()

    print ((emailText.text)!) //This prints the correct email address in the console.

    return true;
}

我的shoppingListViewController通过以下方式收到此字符串:

var emailString = ""
mailComposerVC.setToRecipients ([emailString])

我的问题是当我按下我的按钮打开电子邮件时我得到2016-05-26 14:25:14.617我的APP名称[1397:520893]不是控制台中的有效电子邮件地址? 在打开的电子邮件中有一个空白的To:字段。

我哪里错了?

2 个答案:

答案 0 :(得分:0)

//You have to confirm MFMailComposeViewControllerDelegate.


func configuredMailComposeViewController() -> MFMailComposeViewController {
        let mailComposerVC = MFMailComposeViewController()
        mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property

        mailComposerVC.setToRecipients([emailString])
        mailComposerVC.setSubject("Test mail")
        mailComposerVC.setMessageBody("Sending e-mail in-app is not so bad!", isHTML: false)

        return mailComposerVC
    }

func showSendMailErrorAlert() {
        let sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail.  Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK")
        sendMailErrorAlert.show()
    }

    // MARK: MFMailComposeViewControllerDelegate Method
    func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }

答案 1 :(得分:0)

好的,所以我仍然坚持修复。我再次提出我的问题,希望有人会注意到我的segue不太正确的事情。

我有一个UITabBarController - 它有3个标签(1)产品列表(2)购物清单(3)设置。所以这三个视图也都有UINavigationViewControllers。 我在“设置”页面中有一个文本字段,用于设置MFMailComposeViewController(mailComposerVC.setToRecipients)的默认收件人电子邮件地址,该地址是通过按钮从shoppingListViewController按下启动的。 (邮件正在工作,我只是没有得到我的:地址字符串填充) 我可以通过settingsViewController打印到控制文本字段(emailText.text)。 我的segue并没有一直到shoppingListViewController,它需要作为一个字符串。

SettingsVC(emailText) - > TabBarController - > NavController(第二) - > ShoppingListVC(emailString =“emailText.text”) - > mailComposerVC.setToRecipients([都是EmailString])

我的segue现在看起来如下,但在途中仍然迷路。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let tabBarController = segue.destinationViewController as! UITabBarController
    let nav = tabBarController.viewControllers![2] as! UINavigationController
        let shoppingListViewController = nav.topViewController as? ShoppingListViewController
            shoppingListViewController!.emailString = emailText.text
}