//向下滚动选择器视图时,我能够在文本框中看到正确的值。但是选择器视图显示为“?” (问号)。我很困惑我需要将pickerview作为输入视图分配给文本框。但对我面临的错误仍然没有任何意义。
我正在使用Xcode 9和Swift 3.2。
class BillDetailsViewController: UIViewController ,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource{
//Variables Declaration
//Picker view outlet
@IBOutlet var datePickerView: UIPickerView!
//Picker view datasource - integer array
var integerArray = [Int](1899...2500)
//Textbox where picked value to be shown
@IBOutlet var txtPaidYear: UITextField!
//ViewLoad
override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboardWhenTappedAround()
datePickerView.isHidden = true
datePickerView.reloadAllComponents()
datePickerView.dataSource = self
datePickerView.delegate = self
txtPaidYear.inputView = datePickerView
}
//picker view delegate functions
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return integerArray.count
}
public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
let pickerValue: String = String(integerArray[row])
return pickerValue
}
public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
txtPaidYear.text = String(integerArray[row])
self.datePickerView.reloadAllComponents()
}
}
答案 0 :(得分:1)
****您必须像这样更改方法,否则它肯定会起作用。** 并删除正在使用的TextField的代表。.**
func pickerView(_ pickerView:UIPickerView,numberOfRowsInComponent组件:Int)-> Int { }
func pickerView(_ pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->字符串? { }
func pickerView(_ pickerView:UIPickerView,didSelectRow行:Int,inComponent组件:Int){ }
答案 1 :(得分:0)
我刚删除了类中的所有TextView delgates并且它工作正常。仍然需要弄清楚究竟是什么问题。 textView委托方法之一似乎导致了问题。我需要解决这个问题。任何问题都得到解决。我刚刚创建了一个独立项目并实现了UIPIckerView,它的工作非常完美。因此,我在我的项目中删除了所有textview委托方法。 非常感谢您的支持。
答案 2 :(得分:0)
替换:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int) -> String? {}
使用:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {}