// // ChangeViewController.swift // Test_TableViewMyCell // // Created by USER1 on 03.11.19. // Copyright © 2019 HSHARZ. All rights reserved. // import UIKit class ChangeViewController: UIViewController, UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDataSource { var stadt : Stadt?=nil var modus : ChangeMode = ChangeMode.CHANGE var resultmodus: ResultMode = ResultMode.SAVE var listeKontinent = [String]() var listeBesucht = [String]() // Referenzen @IBOutlet var bnSave: UIButton! @IBOutlet var labelTitle: UILabel! @IBOutlet var tName: UITextField! @IBOutlet var tKontinent: UITextField! @IBOutlet var stepperKontinent: UIStepper! @IBOutlet var pickerviewBesucht: UIPickerView! @IBOutlet var tBemerkung: UITextView! @IBAction func tNameEditingChanged(_ sender: UITextField) { if stadt != nil { stadt!.name=tName.text! } } // Delegate !!! func textViewDidChange(_ textView: UITextView) { if stadt != nil { stadt!.bemerkung=tBemerkung.text! } } @IBAction func stepperKontinentChanged(_ sender: UIStepper) { labelTitle.text = String(stepperKontinent.value) let value:Int = Int(stepperKontinent.value) tKontinent.text = listeKontinent[value-1] } func numberOfComponents(in pickerView:UIPickerView)-> Int{ return 1 } func pickerView(_ pickerView:UIPickerView, numberOfRowsInComponent component:Int) -> Int{ return listeBesucht.count } func pickerView(_ pickerView:UIPickerView, viewForRow row:Int, forComponent component:Int, reusing view: UIView?) -> UIView{ if view != nil { return view! } else { let txt = listeBesucht[row] // neue View erzeugen let newview = UIView ( frame: CGRect(x: 0, y: 0, width: 250, height: 50)) let label = UILabel( frame: CGRect(x: 90, y: 0, width: 160, height: 50)) label.text = txt; label.font = label.font.withSize(24) newview.addSubview(label) // Image let img = UIImageView( frame: CGRect(x: 0, y: 0, width: 50, height: 50)) switch row+1 { case 1: img.image = UIImage(named: "nicht") case 2: img.image = UIImage(named: "down") case 3: img.image = UIImage(named: "haken") case 4: img.image = UIImage(named: "up") default: img.image = UIImage(named: "nicht") } img.contentMode = .scaleAspectFill newview.addSubview(img) return newview } switch row+1 { case 1: stadt!.besucht = .NONE case 2: stadt!.besucht = .DOWN case 3: stadt!.besucht = .AVERAGE case 4: stadt!.besucht = .UP default: stadt!.besucht = .NONE } } // NONE=0, DOWN, AVERAGE, UP // nur Text func pickerView2(_ pickerView:UIPickerView, titleForRow row:Int, forComponent component:Int) -> String?{ switch row+1 { case 1: stadt!.besucht = .NONE case 2: stadt!.besucht = .DOWN case 3: stadt!.besucht = .AVERAGE case 4: stadt!.besucht = .UP default: stadt!.besucht = .NONE } return listeBesucht[row] } // NONE=0, DOWN, AVERAGE, UP func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { // selected Index switch row+1 { case 1: stadt!.besucht = .NONE case 2: stadt!.besucht = .DOWN case 3: stadt!.besucht = .AVERAGE case 4: stadt!.besucht = .UP default: stadt!.besucht = .NONE } } override func viewDidLoad() { super.viewDidLoad() tKontinent.isEnabled=false switch (modus) { case ChangeMode.CHANGE: labelTitle.text = "Datensatz bearbeiten" case ChangeMode.NEW: labelTitle.text = "Neuer Datensatz" stadt = Stadt(Continent.AFRIKA ,"?", "?", Visited.NONE) default: labelTitle.text = "ChangeModus ist falsch" } // AFRIKA=1, AMERIKA, ASIEN, AUSTRALIA, EUROPA listeKontinent.append("Afrika") listeKontinent.append("Amerika") listeKontinent.append("Asien") listeKontinent.append("Australien") listeKontinent.append("Europa") listeBesucht.append("Nicht besucht") listeBesucht.append("schlecht") listeBesucht.append("Durchschnitt") listeBesucht.append("toll") pickerviewBesucht.delegate=self pickerviewBesucht.dataSource = self // NONE=0, DOWN, AVERAGE, UP stepperKontinent.minimumValue = Double(1) stepperKontinent.maximumValue = Double(5) stepperKontinent.stepValue=1 //stepperKontinent. stepperKontinent.value = 1 // if (modus==ChangeMode.CHANGE) { tName.text = stadt!.name tBemerkung.text = stadt!.bemerkung // AFRIKA=1, AMERIKA, ASIEN, AUSTRALIA, EUROPA switch stadt!.kontinent { case .AFRIKA: stepperKontinent.value=1 case .AMERIKA: stepperKontinent.value=2 case .ASIEN: stepperKontinent.value=3 case .AUSTRALIA: stepperKontinent.value=4 case .EUROPA: stepperKontinent.value=5 default: stepperKontinent.value=1 } tKontinent.text = listeKontinent[Int(stepperKontinent.value)-1] switch stadt!.besucht { case .NONE: pickerviewBesucht.selectRow(0, inComponent: 0, animated: false) case .DOWN: pickerviewBesucht.selectRow(1, inComponent: 0, animated: false) case .AVERAGE: pickerviewBesucht.selectRow(2, inComponent: 0, animated: false) case .UP: pickerviewBesucht.selectRow(3, inComponent: 0, animated: false) default: pickerviewBesucht.selectRow(4, inComponent: 0, animated: false) } // } tBemerkung.delegate=self } @IBAction func bnSaveClick(_ sender: Any) { resultmodus = ResultMode.SAVE self.performSegue(withIdentifier: "unwind2View1", sender: self) } @IBAction func bnDeleteClick(_ sender: UIButton) { //resultmodus = ResultMode.DELETE //self.performSegue(withIdentifier: "unwind2View1", sender: self) yesNo(title: "Löschen",message: "Wollen Sie den aktuellen Datensatz löschen?") } // self.performSegueWithIdentifier("unwind2View1", sender: self) func yesNo(title:String, message:String) { let alert = UIAlertController( title: title, message: message, preferredStyle: .alert ) alert.addAction( UIAlertAction(title: "No", style: .cancel, handler: { (_) in } ) ) alert.addAction( UIAlertAction(title: "Yes", style: .destructive, handler: { (_) in self.resultmodus = ResultMode.DELETE self.performSegue(withIdentifier: "unwind2View1", sender: self) } ) ) present(alert, animated: true, completion: nil ) } @IBAction override func unwind( for unwindSegue: UIStoryboardSegue, towards subsequentVC: UIViewController) { if stadt != nil { stadt!.name=tName.text! stadt!.bemerkung=tBemerkung.text! } } }