Thanks for the code. But, please, edit it properly to avoid all these empty lines which make it impossible to read.
I did some formatting:
import UIKit
import MessageUI
class FourthScreenViewController: UIViewController, MFMessageComposeViewControllerDelegate, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
func numberOfComponents(in pickerView: UIPickerView) - Int {
return 1
}
func pickerView( _ pickerView: UIPickerView, numberOfRowsInComponent component: Int) - Int {
if currentTxtFldTag == 10
{
return pickOption.count
}
else
{
return ageOption.count
}
}
func pickerView( _ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) - String? {
if currentTxtFldTag == 10
{
return pickOption[row]
}
else
{
return ageOption[row]
}
}
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if currentTxtFldTag == 10
{
notesField.text = pickOption[row]
self.view.endEditing(true)
}
else
{
TimeOfDay.text = ageOption[row]
self.view.endEditing(true)
}
}
func textFieldShouldBeginEditing(_ textField: UITextField) - Bool {
if textField.tag == 10 // WEIGHT OPTION
{
currentTxtFldTag = 10
}
else // AGE OPTION
{
currentTxtFldTag = 20
}
pickerView.reloadAllComponents()
return true
}
let ageOption = [String](arrayLiteral: "I need a free quote on site.", "I may have more than what's shown.", "I need scheduling/pricing for ONLY what's shown.", "I have a question not offered here.")
let pickOption = [String](arrayLiteral: "Morning", "Mid-Morning", "Mid-Day", "Afternoon")
let pickerView = UIPickerView()
var currentTxtFldTag : Int = 10
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
self.dismiss(animated: true, completion: nil)
}
@IBOutlet weak var FreshImage1: UIImageView!
var newImage: UIImage!
@IBOutlet weak var FreshImage2: UIImageView!
var newImage2: UIImage!
@IBOutlet weak var FreshImage3: UIImageView!
var newImage3: UIImage!
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var addressField: UITextField!
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var notesField: UITextField!
@IBOutlet weak var TimeOfDay: UITextField!
@IBAction func SubmitNow(_ sender: Any) {
print("Submission Button Has Been Pressed")
if (MFMessageComposeViewController.canSendText()) && (MFMessageComposeViewController.canSendAttachments()) {
let controller = MFMessageComposeViewController()
controller.body = "Name: \(nameField.text!) \n\nAddress: \(addressField.text!) \n\nEmail: \(emailField.text!) \n\nTime of Day: \(notesField.text!) \n\nNotes: \(TimeOfDay.text!)"
controller.recipients = [" our phone number "]
controller.messageComposeDelegate = self
let image1 = FreshImage1.image!
let dataImage1 = image1.jpegData(compressionQuality: 100)
guard dataImage1 != nil else { return }
controller.addAttachmentData(dataImage1!, typeIdentifier: "image/jpeg", filename: "Image1.jpeg")
self.present(controller, animated: true, completion: nil)
let image2 = FreshImage2.image!
let dataImage2 = image2.jpegData(compressionQuality: 100)
guard dataImage2 != nil else { return }
controller.addAttachmentData(dataImage2!, typeIdentifier: "image/jpeg", filename: "Image2.jpeg")
self.present(controller, animated: true, completion: nil)
let image3 = FreshImage3.image!
let dataImage3 = image3.jpegData(compressionQuality: 100)
guard dataImage3 != nil else { return }
controller.addAttachmentData(dataImage3!, typeIdentifier: "image/jpeg", filename: "Image3.jpeg")
self.present(controller, animated: true, completion: nil)
}
}
@IBAction func HomeButton(_ sender: Any) {
self.performSegue(withIdentifier: "GoHome3", sender: self)
}
@IBAction func BackButton2(_ sender: Any) {
self.performSegue(withIdentifier: "Back1", sender: self)
}
override func viewDidLoad() {
super.viewDidLoad()
FreshImage1.image = newImage
FreshImage2.image = newImage2
FreshImage3.image = newImage3
pickerView.delegate = self
pickerView.dataSource = self
notesField.tag = 10
TimeOfDay.tag = 20
notesField.delegate = self
TimeOfDay.delegate = self
notesField.inputView = pickerView
TimeOfDay.inputView = pickerView
overrideUserInterfaceStyle = .light
// Do any additional setup after loading the view.
}
@IBAction func dismissKeyboard(_ sender: Any) {
self.resignFirstResponder()
}
}
To make code more robust, replace line 98 instructions as:
let image1 = FreshImage1.image!
let dataImage1 = image1.jpegData(compressionQuality: 100)
by
if let image1 = FreshImage1.image { // If that succeeds, that will unwrap
let dataImage1 = image1.jpegData(compressionQuality: 100)
} else {
return
}
Do the same on lines 106 and 114.
Replace line 94
controller.body = "Name: \(nameField.text!) \n\nAddress: \(addressField.text!) \n\nEmail: \(emailField.text!) \n\nTime of Day: \(notesField.text!) \n\nNotes: \(TimeOfDay.text!)"
by
let name = nameField.text ?? ""
let address = addressField.text ?? ""
let email = emailField.text ?? ""
let notes = notesField.text ?? ""
let time = TimeOfDay.text ?? ""
controller.body = "Name: \(name) \n\nAddress: \(address) \n\nEmail: \(email) \n\nTime of Day: \(time) \n\nNotes: \(notes)"