数据选择器为一个字段正确填充但不是另一个
Data picker populating correctly for one field but not the other
我有一个测试项目,我正在使用它来开发我的代码,然后再在我的实际项目中实现它。在测试中,我有两个字段,当点击它们时应该调出一个填充了该字段数组的 dataPicker。这适用于第一个字段 (enterSeason),但第二个字段 (enterSport) returns 仅适用于键盘。我已经遍历了调试器,变量是正确的,并且两个字段的工作方式相同。我错过了什么?谢谢。
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet var enterSeason: UITextField!
@IBOutlet var enterSport: UITextField!
var dataPickerView = UIPickerView()
var season = ["2013", "2014", "2015"] //multi-season
//var season = ["2015"] //single-season
var sport = ["Baeball", "Football", "Basketball", "Hockey"]
var activeDataArray = []
override func viewDidLoad() {
super.viewDidLoad()
enterSeason.inputView = dataPickerView
dataPickerView.delegate = self
dataPickerView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldDidBeginEditing(textField: UITextField) {
if textField == enterSeason {
activeDataArray = season
} else
if textField == enterSport {
activeDataArray = sport
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return activeDataArray.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return activeDataArray[row] as! String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if activeDataArray == season {
enterSeason.text = season[row] as! String
}
else if activeDataArray == sport {
enterSport.text = sport[row] as! String
}
}
}
这是我的第一个项目,我从 S.O 中学到了很多东西。感谢您所有耐心的回复。
包括
enterSport.inputView = dataPickerView
设置正确的 firstResponder。
设置dataPickerView为enterSport的inputview
enterSport.inputView = dataPickerView;
我有一个测试项目,我正在使用它来开发我的代码,然后再在我的实际项目中实现它。在测试中,我有两个字段,当点击它们时应该调出一个填充了该字段数组的 dataPicker。这适用于第一个字段 (enterSeason),但第二个字段 (enterSport) returns 仅适用于键盘。我已经遍历了调试器,变量是正确的,并且两个字段的工作方式相同。我错过了什么?谢谢。
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet var enterSeason: UITextField!
@IBOutlet var enterSport: UITextField!
var dataPickerView = UIPickerView()
var season = ["2013", "2014", "2015"] //multi-season
//var season = ["2015"] //single-season
var sport = ["Baeball", "Football", "Basketball", "Hockey"]
var activeDataArray = []
override func viewDidLoad() {
super.viewDidLoad()
enterSeason.inputView = dataPickerView
dataPickerView.delegate = self
dataPickerView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldDidBeginEditing(textField: UITextField) {
if textField == enterSeason {
activeDataArray = season
} else
if textField == enterSport {
activeDataArray = sport
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return activeDataArray.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return activeDataArray[row] as! String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if activeDataArray == season {
enterSeason.text = season[row] as! String
}
else if activeDataArray == sport {
enterSport.text = sport[row] as! String
}
}
}
这是我的第一个项目,我从 S.O 中学到了很多东西。感谢您所有耐心的回复。
包括
enterSport.inputView = dataPickerView
设置正确的 firstResponder。
设置dataPickerView为enterSport的inputview
enterSport.inputView = dataPickerView;