希望这是一个简单的问题?但我似乎无法理解它。
我的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:字段。
我哪里错了?
答案 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
}