当我滚动 UIPickerView 时,如何实时获取选定的值

How can I get the selected value in the real-time, when I'm scrolling the UIPickerView

例如,在此图像中,当我将 UIPickerView 滚动到 2012 9 28 时, 我想要的是 黑色标签的文本将变为 2012 9 28 同时 不按任何按钮,例如“完成”按钮

我用的是UIPickerView,之前可以获取选中的数据,也可以通过点击Done按钮将数据放入label,但是我不能将数据放入滚动时的标签。

并且在一般情况下, 我的问题是,当我滚动 UIPickerView 时,如何实时

获取选中的数据

有人能帮帮我吗? ObjectiveC 解决方案还可以,Swift 解决方案对我来说更好,非常感谢

不清楚您使用的是 UIPickerView 还是 UIDatePicker。

对于 UIPickerView,您需要实现 UIPickerViewDelegate。确保将委托添加到您的 ViewController 声明中,并确保在 Storyboard 中将 UIPickerView 控件的委托连接到您的视图控制器。然后实现这个功能:

func pickerView(_ pickerView: UIPickerView, 
        didSelectRow row: Int, 
         inComponent component: Int) {

}

对于 UIDatePicker,您需要将 Storyboard 中的 UIDatePicker 操作连接到视图控制器中的 @IBAction 函数,或者使用 addTarget 函数在代码中连接它:

myDatePicker.addTarget(self, action: #selector(self.respondToPicker, for: .valueChanged), 

假设您正在使用 UIDatePicker,因为您可以使用 UIControlEventValueChanged

来控制操作

喜欢,

datePickerView?.addTarget(self, action: #selector(self.valueChanged(_:)), for: UIControlEvents.valueChanged)

valueChanged() 将是,

func valueChanged(_ datePicker: UIDatePicker) {
    let selectedDate = datePicker.date as NSDate
    print(selectedDate)
}

如果您使用的是 UIPickerview 那么,

titleForRow: 会给你滚动值

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
    print("your value")
}

didSelectRow:会给你选择的值

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
     print("your value")
}