UiPickerview 值在 swift 中显示为问号(“?”) - 但在将其分配给文本框时获得正确的值
UiPickerview values displayed as question mark ("?")in swift - But getting the correct value while assigning it to a textBox
//向下滚动选择器视图时,我能够在文本框中看到正确的值。但是选择器视图显示为“?” (问号)。我对需要将 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()
}
}
我刚刚删除了 class 中的所有 TextView 委托并且它起作用了。仍然需要弄清楚确切的问题是什么。 textView 委托方法之一似乎导致了问题。我需要弄清楚 out.Anyway 问题已得到解决。我刚刚创建了一个独立的项目并实现了 UIPIckerView,它工作得很好。因此,我在删除所有 textview 委托方法的项目中做了同样的事情。
非常感谢您的支持。
****你必须像这样改变方法,它肯定会起作用。**
并删除您正在使用的 TextField 的委托..**
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent 组件: Int) -> Int {
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> 字符串? {
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
}
替换:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int) -> String? {}
与:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {}
//向下滚动选择器视图时,我能够在文本框中看到正确的值。但是选择器视图显示为“?” (问号)。我对需要将 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()
}
}
我刚刚删除了 class 中的所有 TextView 委托并且它起作用了。仍然需要弄清楚确切的问题是什么。 textView 委托方法之一似乎导致了问题。我需要弄清楚 out.Anyway 问题已得到解决。我刚刚创建了一个独立的项目并实现了 UIPIckerView,它工作得很好。因此,我在删除所有 textview 委托方法的项目中做了同样的事情。 非常感谢您的支持。
****你必须像这样改变方法,它肯定会起作用。** 并删除您正在使用的 TextField 的委托..**
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent 组件: Int) -> Int { }
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> 字符串? { }
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { }
替换:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int) -> String? {}
与:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {}