swift - 使用多个 uitextfield 撰写电子邮件(swift)

标签 swift uitextfield mfmailcomposeviewcontroller

如何通过 Swift 使用多个 UITextField 撰写电子邮件?看来我只能在 messageBody 下输入一个数据(名为 UITextField)。如何将多个 UITextField 添加到我的 messageBody 中?

import UIKit
import CoreData
import MessageUI

class EmailTableViewController: UITableViewController, MFMailComposeViewControllerDelegate, UITextFieldDelegate {

    @IBOutlet weak var name: UITextField!
    @IBOutlet weak var phone: UITextField
    @IBOutlet weak var email: UITextField!
    @IBOutlet weak var base: UITextField!
    @IBOutlet weak var rig: UITextField!
    @IBOutlet weak var wellhead: UITextField!
    @IBOutlet weak var connector: UITextField!
    @IBOutlet weak var size: UITextField!
    @IBOutlet weak var depth: UITextField!
    @IBOutlet weak var pressure: UITextField!
    @IBOutlet weak var temp: UITextField!

    @IBAction func SendEmailButton(sender: AnyObject) {    

        var emailTitle = "Interface Information"
        var messageBody = name.text

        var toRecipents = ["test.com"]
        var mc: MFMailComposeViewController = MFMailComposeViewController()
        mc.mailComposeDelegate = self
        mc.setSubject(emailTitle)
        mc.setMessageBody(messageBody, isHTML: false)
        mc.setToRecipients(toRecipents)
        self.presentViewController(mc, animated: true, completion: nil)

    }

    func mailComposeController(controller:MFMailComposeViewController, didFinishWithResult result:MFMailComposeResult, error:NSError) {
        switch result.value {
        case MFMailComposeResultCancelled.value:
            println("Mail cancelled")
        case MFMailComposeResultSaved.value:
            println("Mail saved")
        case MFMailComposeResultSent.value:
            println("Mail sent")
        case MFMailComposeResultFailed.value:
            println("Mail sent failure: %@", [error.localizedDescription])
        default:
            break
        }
        self.dismissViewControllerAnimated(true, completion: nil)

    }

最佳答案

您可以创建一个小辅助函数并将字段放入数组中,如下所示:

func appendTextFromTextField(string: String, textField: UITextField) -> String {
    return string + textField.text + "\n"
}

@IBAction func SendEmailButton(sender: AnyObject) {

    var fields: [UITextField] = [name, phone, email, base, rig, wellhead, connector,
        size, depth, pressure, temp]
    var messageBody = ""

    for f in fields {
        messageBody = appendTextFromTextField(messageBody, textField: f)
    }

    // etc.

}

关于swift - 使用多个 uitextfield 撰写电子邮件(swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28171597/

相关文章:

iOS:TableView 中的多个部分不起作用

ios - MFMailComposeViewController navigationBar 覆盖在模拟器中有效,但在设备中无效

ios - 用于潜望镜式评论的 Swift 动画

ios - 拍照后如何暂停?

ios - 在 Swift 中处理初始化失败

iphone - 以编程方式在 UiTextField 中移动光标

ios - 自定义单元格中的焦点 UITextfield

iOS - 移动 View 时界面元素重叠

ios - MailComposeViewController 不保留状态栏样式

ios - 在 UIActionSheet 中单击索引按钮时如何撰写邮件?