Swift3 使UIPickerView的自定义类能够以Swift格式发送事件

Swift3 使UIPickerView的自定义类能够以Swift格式发送事件,swift3,uipickerview,uidatepicker,uicontrol,uicontrolevents,Swift3,Uipickerview,Uidatepicker,Uicontrol,Uicontrolevents,我已经基于UIPickerView编写了一个自定义类。在类中,我实现了下一个方法: func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { let min = (selectedRow(inComponent: 0) % minutes.count) let sec = (selectedRow(inComponent: 1) % secon

我已经基于
UIPickerView
编写了一个自定义类。在类中,我实现了下一个方法:

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

    let min = (selectedRow(inComponent: 0) % minutes.count)
    let sec = (selectedRow(inComponent: 1) % seconds.count)

    self.min = min
    self.sec = sec

    }
每次用户使用选择器视图从“min”和“sec”中选择值时,这些类变量都会相应地更改。所以,工作没问题

现在,我希望这个类在每次更改这些变量时发送事件。是否可以为此类采用
valueChanged
事件,以及如何实现它,或者我必须为这些目的定制事件?我想这样做,以便能够通过IB的行动出口。请纠正我,如果我错过了模式

换言之,我可以提出这个问题:是什么使内置的
UIDataPicker
能够通过操作插座连接到界面生成器中的视图控制器?我应该向自定义类添加什么以部分实现该功能

苹果表示:“
UIDatePicker
类使用一个自定义的
UIPickerView
子类来显示日期和时间。”如果我错了,请在这里纠正我,但他们也指出,
UIDatePicker
继承自
UIControl
而不是
UIPickerView
。至于
UIPickerView
——他们说它继承了
UIView
。因此,对于
UIPickerView
UIDatePicker
的继承,我看不到任何联系。此外,由于
UIView
类的多重继承,我无法继承
UIControl
以获得事件发送功能。我不明白为什么这里的事情如此奇怪,我不能为
UIPickerView
使用
UIControl
功能

  • 创建
    YourCustomControl
    UIControl继承
  • addSubview
    UIPickerView
  • YourCustomControl
    设置为此选取器的代理
  • 要发送事件,您需要添加此行

    sendActions(for: .valueChanged)
    
    在这些变量发生变化的每个地方


    var min:Int=0{didSet{sendActions(for:.valueChanged)}}
    -但没有运气:未解析的标识符“sendActions”。在我的数据选择器类中,我继承了
    UIPickerView
    UIPickerViewDataSource
    UIPickerViewDelegate
    。我想我必须继承一个以上的类或协议才能使
    sendActions
    可用?只需了解我必须继承
    UIControl
    类以使用
    sendActions..
    。但是我已经从
    UIPickerView
    继承,并从类
    UIControl`和
    UIPickerView
    获得编译错误-
    多重继承。有没有办法解决这一矛盾,并且仍然使用
    UIPickerView
    ?起初,这对我来说是一个有点简洁的答案,但经过一段时间的实验,我得到了这个想法!非常感谢!