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