В настоящее время я получил свой код для правильной работы, но проблема, с которой я столкнулся с UIPickerView. Прямо сейчас, если я выберу бренд Cameron, он отправится в var Cameron, но если я выберу бренд Shaffer, он по-прежнему отправится в Var Cameron.Выбор массива выбора UIPickerView Swift
Как я могу переписать код, поэтому, когда я выбираю другой бренд, он выбирает другой массив?
Например, если выбрать марку Камерона, это выбрать Камерона, если я выбрать марку Шаффер, это выбрать Шаффер и т.д.
class Picker: UIViewController, UIPickerViewDelegate, UITextFieldDelegate
{
var activeTextField:UITextField?
@IBOutlet var pickerView1: UIPickerView!
@IBOutlet var pickerView2: UIPickerView!
@IBOutlet var pickerView3: UIPickerView!
@IBOutlet var textField1: UITextField!
@IBOutlet var textField2: UITextField!
@IBOutlet var textField3: UITextField!
var brand = ["Cameron","Shaffer", "Hydril"]
var cameron = ["D Annular Preventer", "UM Ram Preventer", "U Ram Preventer"]
var shaffer = ["Spherical Annular Preventer", "LXT Ram Preventer", "NXT Ram Preventer"]
var size = ["7 1/16","11","13 5/8"]
var size2 = ["8 5/8","12","15 5/8"]
override func viewDidLoad() {
super.viewDidLoad()
pickerView1 = UIPickerView()
pickerView2 = UIPickerView()
pickerView3 = UIPickerView()
pickerView1.tag = 0
pickerView2.tag = 1
pickerView3.tag = 2
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 0 {
return brand.count
} else if pickerView.tag == 1 {
return cameron.count
} else if pickerView.tag == 2 {
return size.count
}
return 1
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if pickerView.tag == 0 {
return brand[row]
} else if pickerView.tag == 1 {
return cameron[row]
} else if pickerView.tag == 2 {
return size[row]
}
return ""
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 0 {
textField1.text = brand[row]
} else if pickerView.tag == 1 {
textField2.text = cameron[row]
} else if pickerView.tag == 2 {
textField3.text = size[row]
}
}
Не имея энергии, чтобы ответить на этот вопрос, можете ли вы понимать/использовать словари вместо жестко закодированных литералов, чтобы вы могли связать каждую марку с ее допустимыми значениями? Таким образом, массив допустимых значений можно искать на основе * использования бренда в качестве ключа *. – BaseZen
Я раньше не использовал словари. Мне это может понадобиться. – Coder