创建一个UIPickerView自定义类,可以在Swift

时间:2017-03-12 17:08:26

标签: 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) % seconds.count)

    self.min = min
    self.sec = sec

    }

每次用户选择" min"和"秒"使用选择器视图,这些类变量会相应地更改。所以,它的工作正常。

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

可能是我把这个问题换句话说:是什么让内置UIDataPicker能够通过操作出口连接到界面构建器中的视图控制器 - 我应该添加到我的自定义类中以实现部分实现功能?

Apple声明:" UIDatePicker类使用UIPickerView的自定义子类来显示日期和时间。"如果我错了,请在此纠正我,但他们也指出UIDatePicker继承自UIControl而不是UIPickerView。至于UIPickerView - 他们说它继承自UIView。因此,我认为UIControlUIPickerView的{​​{1}}的继承方面没有任何联系。此外,由于UIDatePicker类的多重继承,我无法继承UIControl以获取事件发送功能。无法理解为什么这里的内容如此奇怪,我无法UIView使用UIControl功能。

1 个答案:

答案 0 :(得分:1)

  1. 创建YourCustomControl继承自UIControl
  2. addSubview UIPickerView
  3. YourCustomControl设置为此选择器的委托
  4. enter image description here

    要发送事件,您需要添加此行

    sendActions(for: .valueChanged)
    

    在这些变量发生变化的每个地方

    UIKit - sendActions