UIPickerView 报告不正确的行



当我从上到下遍历这个UIPickerView时,每个元素都正确报告了该行。但是,从下到上遍历 UIPickerView,当点击"选择 3"时,该行会将自身重置为零,而实际上它应该是 2。我添加了用于视觉证明的标签 - 它闪烁"2",然后在遍历UIPickerView时重置为零,如前所述。显然,无法依赖显示元素和实际行之间的关系是准确的,这会破坏事情。不知道为什么这不起作用...

class ViewController3: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
   @IBOutlet weak var picker: UIPickerView!
    @IBOutlet weak var textLabel: UILabel!

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return 4
    }
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
         return 1
    }

 func pickerView(_ pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String?  {
          textLabel.text = String(row)
       return pickerValues[row]   
    }

    let pickerValues = ["Choice 1", "Choice 2", "Choice 3","Choice 4"]

如果目标是在用户每次转动选取器视图的"轮子"时更改标签,请在 pickerView(_:didSelectRow:inComponent:) 实现委托方法。