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? {}