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

时间:2017-12-12 11:11:45

标签: ios swift scroll uipickerview

This is my prototype 例如,在此图片中,当我将UIPickerView滚动到2012 9 28时,我想要的是黑色标签的文字将变为2012 9 28 同时而不按任何按钮,如完成按钮

我正在使用UIPickerView,我之前可以获取所选数据,我也可以通过点击完成按钮将数据放入标签,但我无法将数据放入标签中滚动。

并且在一般情况下, 我的问题是,当我滚动UIPickerView时,如何获得实时实时选择的数据

有谁可以帮助我? ObjectiveC解决方案没问题,Swift解决方案对我来说更好,非常感谢

2 个答案:

答案 0 :(得分:2)

目前还不清楚您是使用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), 

答案 1 :(得分:0)

我假设您正在使用 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")
}