import UIKit
import MessageUI
class RechnungViewController: UIViewController , UIPickerViewDelegate, UIPickerViewDataSource, MFMailComposeViewControllerDelegate {
@IBOutlet weak var pickerViewKunde: UIPickerView!
@IBOutlet weak var pickerViewAufgabe: UIPickerView!
@IBOutlet weak var anzahlStundenField: UITextField!
var allKunden = [Kunde]()
var allAufgaben = [Aufgabe]()
var kundeName: String? = ""
var kundeEmail: String? = ""
var aufgabeName: String? = ""
var aufgabePreisString: String? = ""
var endPreis: Int? = 0
@IBAction func rechnungBtn(_ sender: Any) {
self.berechneRechnung()
let aufgabePreisInt = Int(aufgabePreisString!)
let anzStundenInt = Int(anzahlStundenField.text!)
var endPreis = aufgabePreisInt! * anzStundenInt!
let composeView = MFMailComposeViewController()
composeView.mailComposeDelegate = self
composeView.setToRecipients([kundeEmail!])
composeView.setSubject("Aktuelle Rechnung")
composeView.setMessageBody("Sehr geehrte Damen und Herren, \n anbei die Rechnung für folgende Leistung: \n \(aufgabeName ?? "Es ist ein fehler Aufgetreten") über einen Zeitraum von \(anzahlStundenField.text ?? "Es ist ein fehler Aufgetreten") Stunden. \n Daraus ergiebt sich ein Betrag von \(endPreis)Bitte überweisen Sie den Betrag in den nächsten 10 Tagen. \n Mit freundlichen Grüssen \n XY ", isHTML: false)
if MFMailComposeViewController.canSendMail() {
self.present(composeView, animated: true, completion: nil)
} else {
let alert = UIAlertController(title: "Fehler", message: "Mailversand ncht möglich", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.getAllKunden()
self.getAllAufgaben()
}
func getAllKunden() {
let arr : ArrayKundeResource = ArrayKundeResource()
self.allKunden = arr.getList()
print(self.allKunden.count)
}
func getAllAufgaben() {
let arr : ArrayAufgabeResource = ArrayAufgabeResource()
self.allAufgaben = arr.getList()
print(self.allAufgaben.count)
}
func berechneRechnung() {
let aufgabePreisInt = Int(aufgabePreisString!)
let anzStundenInt = Int(anzahlStundenField.text!)
endPreis = aufgabePreisInt! * anzStundenInt!
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
var rowCount: Int = self.allKunden.count
if pickerView == pickerViewAufgabe{
rowCount = self.allAufgaben.count
}
return rowCount
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == pickerViewKunde {
if self.allKunden.isEmpty == false {
return self.allKunden[row].name
}
} else if pickerView == pickerViewAufgabe {
let rowTitle = self.allAufgaben[row]
return rowTitle.nameDerAufgabe
}
return "nicht Vorhanden"
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == pickerViewKunde {
self.kundeName = self.allKunden[row].name
self.kundeEmail = self.allKunden[row].email
}else if pickerView == pickerViewAufgabe {
self.aufgabeName = self.allAufgaben[row].nameDerAufgabe
self.aufgabePreisString = self.allAufgaben[row].preisProStunde
}
}
}
现在我的问题如下。
当我旋转一个pickerView时,应用程序崩溃,错误代码为Thread 1:Signal SIGABRT 当我点击按钮创建邮件时,应用程序再次崩溃,错误代码为线程1:EXC_BAD_INSTRUCTION。
我已经说过了谢谢你的帮助。