【问题标题】:how can I reload a View iOS swift, MFMailComposeViewController如何重新加载 View iOS swift,MFMailComposeViewController
【发布时间】:2014-12-10 03:23:09
【问题描述】:

我正在尝试在我的应用程序中实现电子邮件功能,我按照教程编写了这个类:

import UIKit
import MessageUI

class EmailController: UIViewController, MFMailComposeViewControllerDelegate {

@IBOutlet weak var subject: UITextField?
@IBOutlet weak var body: UITextView?
var alert: UIAlertView = UIAlertView()
var subjectText:String?
var bodyText:String?
var toSomeone:AnyObject!
var mailController:MFMailComposeViewController = MFMailComposeViewController()

override func viewDidLoad() {
    super.viewDidLoad()
    //AlertView
    alert.title = "Error"
    alert.message = "Faltan datos"
    alert.addButtonWithTitle("Ok")
    //Recipients
    toSomeone = "xxxxxx@gmail.com"
    //asignar delegado al controlador de email
    mailController.mailComposeDelegate = self


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}



@IBAction func sendEmail(sender: UIBarButtonItem) {

    //bool var becouse optionals can't be used like bools
    var condicion1:Bool? = subject?.text.isEmpty
    var condicion2:Bool? = body?.text.isEmpty

    //unwraped the variables
    if (!condicion1! && !condicion2!) {

        subjectText = self.subject!.text
        bodyText = self.body!.text

        //Completar objeto mailController

        mailController.setSubject(subjectText)
        mailController.setMessageBody(bodyText, isHTML: false)

        var recipients = [toSomeone]

        mailController.setToRecipients(recipients)

        self.presentViewController(mailController, animated: true, completion: nil)

    }else {

        self.alert.show()

    }




}


func  mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {


    switch result.value {

    case MFMailComposeResultCancelled.value:
        //se cancelo envio
        alert.title = "Envio cancelado"
        alert.message = "Se cancelo el envio"
        alert.addButtonWithTitle("Ok")
        alert.show()

    case MFMailComposeResultSaved.value:
        //se guardo draft
        alert.title = "Correo guardado"
        alert.message = "Se guardo el correo en la app de Mail"
        alert.addButtonWithTitle("Ok")
        alert.show()

    case MFMailComposeResultFailed.value:
        //fallo el envio
        alert.title = "Error"
        alert.message = "El correo no pudo ser enviado"
        alert.addButtonWithTitle("Ok")
        alert.show()

    case MFMailComposeResultSent.value:
        //el mail se pudo enviar y esta en la pila de envio
        alert.title = "Correo enviado"
        alert.message = "El correo se envio exitosamente"
        alert.addButtonWithTitle("Ok")
        alert.show()

    default:
        break


    }

                                                    //bloque de codigo a ejecutar al finalizar de mostrar la vista
    mailController.dismissViewControllerAnimated(true, nil)



     }

   }

我可以很好地发送电子邮件,但是当我关闭邮件视图时,我看到了我的初始视图(没关系),问题是如果我再次尝试调用电子邮件视图(我的意思是尝试发送另一封电子邮件)程序不响应,我不能再关闭它,我认为我需要重新加载初始视图???

感谢您的帮助!

【问题讨论】:

    标签: ios email swift reload


    【解决方案1】:

    您可以在每次发送电子邮件时显示一个新的MFMailComposeViewController,就像这样

    mailController = MFMailComposeViewController()
    

    这样声明。

    var mailController:MFMailComposeViewController?
    

    【讨论】:

    • 酷!您的解决方案有效! :D 我还有一个问题,如何取消分配我的对象?如果我没记错的话,我可以在使用此方法关闭邮件视图后执行代码:mailController?.dismissViewControllerAnimated(true, nil),但我不知道如何在该方法中放置一段代码,我不知道知道如何为我的对象释放内存,我认为可能是这样的? :对象1 = 无。感谢您的帮助!
    • 如果声明var mailController:MFMailComposeViewController?,可以使用mailController = .NonemailController = nil将其设置为nil。更多来自here
    • ok :),但你知道如何在此处放置一段代码(在完成参数中)吗? self.presentViewController(mailController,animated:true,completion:nil)我尝试了一个clousure,但我认为我把它放在了错误的方式
    • 请试试这个:self.presentViewController(mailController!, animated: true, completion: { () -> Void in println(self.presentedViewController) })
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多