使 UIPickerView 的自定义 class 能够在 Swift 中发送事件
Make a custom class of UIPickerView able to send events in Swift
我已经根据 UIPickerView
编写了自定义 class。在 class 中,我实现了下一个方法:
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" 中选择值时,这些 class 变量会相应更改。所以,它工作正常。
现在,我希望 class 每次更改这些变量时都发送事件。是否可以为此 class 采用 valueChanged
事件,以及如何实现它,或者我必须为此目的制作自定义事件?我想以这种方式进行,以便能够通过 IB 进行行动。如果我错过了模式,请纠正我。
也许我可以换句话说这个问题:是什么让内置 UIDataPicker
能够连接到具有操作插座的界面生成器中的视图控制器 - 我应该向我的自定义添加什么 class 部分实现该功能?
Apple 声明:“UIDatePicker
class 使用 UIPickerView
的自定义子 class 来显示日期和时间。”如果我错了,请在这里纠正我,但他们还指出 UIDatePicker
继承自 UIControl
而不是 UIPickerView
。至于 UIPickerView
- 他们说它继承自 UIView
。因此,我认为 UIControl
对 UIPickerView
和 UIDatePicker
的继承没有任何联系。另外由于UIView
class的多重继承,我无法继承UIControl
来获取事件发送功能。无法理解为什么这里的事情如此奇怪,我不能为 UIPickerView
.
使用 UIControl
功能
- 创建
YourCustomControl
继承自 UIControl
- 添加子视图
UIPickerView
- 将
YourCustomControl
设置为该选择器的代表
要发送事件,您需要添加此行
sendActions(for: .valueChanged)
在这些变量被改变的每个地方
我已经根据 UIPickerView
编写了自定义 class。在 class 中,我实现了下一个方法:
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" 中选择值时,这些 class 变量会相应更改。所以,它工作正常。
现在,我希望 class 每次更改这些变量时都发送事件。是否可以为此 class 采用 valueChanged
事件,以及如何实现它,或者我必须为此目的制作自定义事件?我想以这种方式进行,以便能够通过 IB 进行行动。如果我错过了模式,请纠正我。
也许我可以换句话说这个问题:是什么让内置 UIDataPicker
能够连接到具有操作插座的界面生成器中的视图控制器 - 我应该向我的自定义添加什么 class 部分实现该功能?
Apple 声明:“UIDatePicker
class 使用 UIPickerView
的自定义子 class 来显示日期和时间。”如果我错了,请在这里纠正我,但他们还指出 UIDatePicker
继承自 UIControl
而不是 UIPickerView
。至于 UIPickerView
- 他们说它继承自 UIView
。因此,我认为 UIControl
对 UIPickerView
和 UIDatePicker
的继承没有任何联系。另外由于UIView
class的多重继承,我无法继承UIControl
来获取事件发送功能。无法理解为什么这里的事情如此奇怪,我不能为 UIPickerView
.
UIControl
功能
- 创建
YourCustomControl
继承自UIControl
- 添加子视图
UIPickerView
- 将
YourCustomControl
设置为该选择器的代表
要发送事件,您需要添加此行
sendActions(for: .valueChanged)
在这些变量被改变的每个地方