如何观察 ReactiveSwift 中 UIControl 子类的变化?

Zac*_*iro 0 cocoa-touch ios reactive-cocoa swift

我已经建立了 UIControl 的一个子类,我想观察切换事件。从 RAC3 天开始就有一些较旧的答案,我们现在已经到了 RAC5,所以我想我会问这个问题以获得更多最新信息。

Jul*_*oud 5

我认为最常见的方法是使用reactive.mapControlEvents. 基本上,它会创建一个每次UIControl发送控制事件时都会触发的信号,并将 映射UIControl到您感兴趣的属性上。

使用它,您可以根据需要创建自己的信号。例如,如果您想创建一个在UISegmentedControl更新其索引时触发的信号,您将执行以下操作:

extension Reactive where Base: UISegmentedControl {

    /// A signal of indexes of selections emitted by the segmented control.
    public var selectedSegmentIndexes: Signal<Int, NoError> {
        return mapControlEvents(.valueChanged) { $0.selectedSegmentIndex }
    }
}
Run Code Online (Sandbox Code Playgroud)

(此代码实际上是ReactiveCocoa直接取自)。