1

我编写了一个基于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继承 fromUIControl而不是 from UIPickerView。至于UIPickerView- 他们说它继承自UIView. UIControl因此,我认为forUIPickerView和的继承没有任何联系UIDatePickerUIControl由于类的多重继承,我也无法继承以获得事件发送功能UIView。不明白为什么这里的事情这么奇怪,我不能UIControl使用UIPickerView.

4

1 回答 1

1
  1. 创建YourCustomControl继承自UIControl
  2. 添加子视图UIPickerView
  3. 设置YourCustomControl为此选择器的代表

在此处输入图像描述

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

sendActions(for: .valueChanged)

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

UIKit - 发送动作

于 2017-03-12T17:31:22.390 回答