2016-05-26 4 views
0

Надеюсь, это простая проблема? Но я просто наклоняю, кажется, обнимаю его.MFMailComposeViewController setToRecipients append Строка из настроек textField проблема

У меня есть текстовое поле в моих настройкахViewController, называемое 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 recieves этой строки следующий:

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

Моя проблема заключается в том, что, когда я нажимаю мою кнопку, чтобы открыть электронную почту я получаю 2016-05-26 14: 25: 14.617 MY APP Имя [1397: 520893] не является допустимым адресом электронной почты в консоли? И пустое поле Кому: открытое письмо.

Куда я иду не так?

ответ

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) 
    } 
+0

Привет, спасибо за ваш ответ, но моя настройка электронной почты работает нормально. Проблема, с которой я столкнулась, заключается в том, что вы отправляете emailString из настроекViewController через navigationController и в shoppinglistViewController, где он используется в setToRecipients MFMailComposeViewController. Кажется, что эта строка потерялась на этом пути? –

0

Хорошо, я все еще придерживаюсь исправления. Я снова расскажу о своей проблеме, в надежде, что кто-то заметит что-то не совсем правильно с моей сегой.

У меня есть UITabBarController - у него есть 3 вкладки (1) Список продуктов (2) Список покупок (3) Настройки. Таким образом, у всех трех представлений есть UINavigationViewControllers. У меня есть текстовое поле на моей странице настроек, чтобы установить адрес электронной почты получателя по умолчанию для MFMailComposeViewController (mailComposerVC.setToRecipients), который запускается нажатием кнопки из shoppingListViewController. (Почта работает, я просто не получаю мою: адресная строка заполнена) Я могу печатать для консоли текстовое поле (emailText.text) просто отлично от settingsViewController. Мой segue не до конца доходит до shoppingListViewController, где это требуется как строка.

SettingsVC (emailText) -> TabBarController -> NavController (второй) -> ShoppingListVC (emailString = "emailText.text") -> mailComposerVC.setToRecipients ([emailString])

Мой переход в настоящее время выглядит следующим образом, но все еще теряется в пути.

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 
} 
Смежные вопросы