Hi everybody
I have a code that works properly (see below) but I want to add a thing.
Now to change the value on TextField2 I need to enter every time a value on TextField1. What I'm looking for is to keep value on TextField1 and obtain different values on TextField2 by changing values on PickerViews 1 and/or 2.
import UIKit
class ConversorDistanciaSubViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate {
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var labelField1: UILabel!
@IBOutlet weak var labelField2: UILabel!
@IBOutlet weak var pickerView1: UIPickerView!
@IBOutlet weak var pickerView2: UIPickerView!
let udd1 = 0
let udd2 = 0
let distances = ["Milímetro", "Centímetro", "Metro", "Kilómetro", "Yardas", "Pulgada", "Pie", "Milla", "Milla Náutica"]
let abreviaturas = ["mm", "cm", "m", "km", "yd", "in", "ft", "mi", "nmi"]
@IBAction func textField1EntryValue(_ sender: UITextField) {
var udd1 = Double(textField1.text!)
var udd2 = Double(textField2.text!)
if (udd1 != nil)
{
// Primera medida Milímetros
if (labelField1.text == labelField2.text) {
textField2.text = textField1.text
}
if (labelField1.text == "mm") {
if (labelField2.text == "cm") {
let udd2 = udd1!*0.1
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*0.001
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*0.000001
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*0.00109361
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*0.0393701
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*0.00328084
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.00000062137
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.00000053996
textField2.text = String(udd2)
}
}
// Segunda medida Centímetros
if (labelField1.text == "cm") {
if (labelField2.text == "mm") {
let udd2 = udd1!*10
textField2.text = String(udd2)
}
if (labelField1.text == "m") {
let udd2 = udd1!*1
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*0.00001
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*0.0109361
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*0.393701
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*0.0328084
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.0000062137
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.0000053996
textField2.text = String(udd2)
}
}
// Tercera medida Metros
if (labelField1.text == "m") {
if (labelField2.text == "mm") {
let udd2 = udd1!*1000
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*100
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*0.001
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*1.09361
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*39.3701
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*3.28084
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.00062137
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.00053996
textField2.text = String(udd2)
}
}
// Cuarta medida Kilómetro
if (labelField1.text == "km") {
if (labelField2.text == "mm") {
let udd2 = udd1!*1000000
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*100000
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*1000
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*1093.61
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*39370.1
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*3280.84
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.62137
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.53996
textField2.text = String(udd2)
}
}
// Quinta medida Yarda
if (labelField1.text == "yd") {
if (labelField2.text == "mm") {
let udd2 = udd1!*914.4
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*91.44
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*0.9144
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*0.0009144
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*36
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*3
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.000568182
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.000493737
textField2.text = String(udd2)
}
}
// Sexta medida Pulgada
if (labelField1.text == "in") {
if (labelField2.text == "mm") {
let udd2 = udd1!*25.4
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*2.54
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*0.0254
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*0.0000254
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*0.0277778
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*0.0833333
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.000015783
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.000013715
textField2.text = String(udd2)
}
}
// Séptima medida Pie
if (labelField1.text == "ft") {
if (labelField2.text == "mm") {
let udd2 = udd1!*304.8
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*30.48
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*0.3048
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*0.0003048
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*0.333333
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*12
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*0.000189394
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.000164579
textField2.text = String(udd2)
}
}
// Octava medida Milla
if (labelField1.text == "mi") {
if (labelField2.text == "mm") {
let udd2 = udd1!*1609340
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*160934
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*1609.34
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*1.60934
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*1760
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*63360
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*5280
textField2.text = String(udd2)
}
if (labelField2.text == "nmi") {
let udd2 = udd1!*0.868976
textField2.text = String(udd2)
}
}
// Novena medida Milla Náutica
if (labelField1.text == "nmi") {
if (labelField2.text == "mm") {
let udd2 = udd1!*1852000
textField2.text = String(udd2)
}
if (labelField2.text == "cm") {
let udd2 = udd1!*185200
textField2.text = String(udd2)
}
if (labelField2.text == "m") {
let udd2 = udd1!*1852
textField2.text = String(udd2)
}
if (labelField2.text == "km") {
let udd2 = udd1!*1.852
textField2.text = String(udd2)
}
if (labelField2.text == "yd") {
let udd2 = udd1!*2025.37
textField2.text = String(udd2)
}
if (labelField2.text == "in") {
let udd2 = udd1!*72913.4
textField2.text = String(udd2)
}
if (labelField2.text == "ft") {
let udd2 = udd1!*6076.12
textField2.text = String(udd2)
}
if (labelField2.text == "mi") {
let udd2 = udd1!*1.15078
textField2.text = String(udd2)
}
}
else if (udd1 == nil) {
textField2.text = "0"
}
}
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let invalidCharacters = CharacterSet(charactersIn: ".0123456789").inverted
return string.rangeOfCharacter(from: invalidCharacters, options: [], range: string.startIndex ..< string.endIndex) == nil
}
override func viewDidLoad() {
super.viewDidLoad()
pickerView1.delegate = self
pickerView1.dataSource = self
pickerView2.delegate = self
pickerView2.dataSource = self
textField1.delegate = self
textField2.delegate = self
textField1.keyboardType = .numberPad
textField2.keyboardType = .numberPad
//********* IMPLEMENTAMOS UNA BARRA CON EL BOTON Done EN EL TECLADO DEL IPHONE ************
let toolBar = UIToolbar()
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(self.doneClicked))
toolBar.setItems([doneButton], animated: false)
textField1.inputAccessoryView = toolBar
textField2.inputAccessoryView = toolBar
}
@objc func doneClicked() {
view.endEditing(true)
}
//*********************************************************************
//********** FUNCIONES QUE DEFINEN A LOS PICKERVIEW **********
func numberOfComponents(in pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return distances[row]
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return distances.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
if pickerView == pickerView1
{
labelField1.text = abreviaturas[row]
}
else if pickerView == pickerView2
{
labelField2.text = abreviaturas[row]
}
}
//****************************************************
}I know my code is long, but don't know yet how to manage Arrays.
Thanks for your help guys.