我一直在论坛上搜索,但没有任何帮助。我在一个视图控制器中使用了4个文本字段,并且对于每个文本字段,我使用了一个单独的pickerView作为inputViews的textFields (4选取器)。
当我单击第一个textField时,pickerView1成功出现,文本字段显示数据,但是当我单击第二个、第三个和第四个文本字段时,第一个pickerView出现。我怀疑错误存在于inputView声明中。
如果您能帮我在pickerView中添加一个“完成”按钮,我将不胜感激。
我的代码:
class ViewController1: UIViewController, UIPickerViewDelegate
{
@IBOutlet var pickerView1: UIPickerView!
@IBOutlet var pickerView2: UIPickerView!
@IBOutlet var pickerView3: UIPickerView!
@IBOutlet var pickerView4: UIPickerView!
@IBOutlet var textField1: UITextField!
@IBOutlet var textField2: UITextField!
@IBOutlet var textField3: UITextField!
@IBOutlet var textField4: UITextField!
var hazards = ["a","b", "c"]
var reasons = ["d", "e", "f"]
var site = ["v","h","i","j"]
var line = ["k", "l","m", "n"]
override func viewDidLoad() {
super.viewDidLoad()
pickerView1 = UIPickerView()
pickerView2 = UIPickerView()
pickerView3 = UIPickerView()
pickerView4 = UIPickerView()
pickerView1.delegate = self
pickerView2.delegate = self
pickerView3.delegate = self
pickerView4.delegate = self
self.textField1.inputView = self.pickerView1;
self.textField2.inputView = self.pickerView2;
self.textField3.inputView = self.pickerView3;
self.textField4.inputView = self.pickerView4;
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 0 {
return hazards.count
} else if pickerView.tag == 1 {
return reasons.count
} else if pickerView.tag == 2 {
return site.count
} else if pickerView.tag == 3 {
return line.count
}
return 1
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if pickerView.tag == 0 {
return hazards[row]
} else if pickerView.tag == 1 {
return reasons[row]
} else if pickerView.tag == 2 {
return site[row]
} else if pickerView.tag == 3 {
return line[row]
}
return ""
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 0 {
textField1.text = hazards[row]
} else if pickerView.tag == 1 {
textField2.text = reasons[row]
} else if pickerView.tag == 2 {
textField3.text = site[row]
} else if pickerView.tag == 3 {
textField4.text = line[row]
}
}
}发布于 2014-10-21 23:34:42
您使用选取器视图的tag属性来决定哪个数组是给定选取器视图的数据源,但是最初并没有设置标记。tag缺省为0,因此所有四个选取器视图都显示相同的数据。实例化picker视图后,添加以下内容:
pickerView1.tag = 0
pickerView2.tag = 1
pickerView3.tag = 2
pickerView4.tag = 3https://stackoverflow.com/questions/26488250
复制相似问题