Git Hub
коротко

RxSwift кастомная View'ха

7 марта 2019, 4:03

Пишем своё расширение кастомной вьюхи.

import UIKit
import RxSwift
import RxCocoa


class CustomView: UIControl {
    
    var value: Int = 0 {
        didSet { sendActions(for: .valueChanged)}
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        
    }
    
    func toggle() {
        if value == 0 {
            backgroundColor = .green
            value = 1
        } else {
            backgroundColor = .red
            value = 0
        }
    }
    
}

extension Reactive where Base: CustomView {
    var value: ControlProperty<Int> {
        return base.rx.controlProperty(editingEvents: UIControlEvents.valueChanged, getter: { customView in
            return customView.value
        }, setter: { customView, newValue in
            customView.value = newValue
        })
    }
}

И теперь использовать можно так

customView.rx.value
            .subscribe(onNext: { value in
                print("changed my value -> \(value)")
            })
            .disposed(by: bag)

Поделиться
Популярное