[Swift]在RxSwift中拾取按钮点击事件


我喜欢

RxSwift,因为它使按钮点击事件和TableView CollecrionView易于实现。
这是按钮点击事件的一些实现。

使用订阅(_ on :)

订阅的说明(_ on :)

Subscribes an event handler to an observable sequence.<br>
- parameter on: Action to invoke for each event in the observable sequence.<br>
- returns: Subscription object used to unsubscribe from the observable sequence.<br>

换句话说,您可以选择可以监视的事件。
如果使用它来拾取Button点击事件,它将看起来像这样。

1
2
3
button.rx.tap.subscribe({ [weak self] _ in
    // ボタンタップでキックしたいアクションを記述
    }).disposed(by: disposeBag)

当然,

[weak self]可以是[unowned self],但是我经常使用[weak self],因为它管理起来很麻烦。
循环参考一旦将其唤醒,就很麻烦进行研究,并且崩溃不会出现任何问题,因此最终导致脑部肌肉weak。 ..

本文对[弱自我]和[无主自我]

很有趣

使用bind(对观察者:)

我通常采用这种实现方法。

1
2
3
4
5
6
7
8
9
private func setButton() {
    button.rx.tap.bind(to: buttonTapBinder).disposed(by: disposeBag)
}

private var buttonTapBinder: Binder<()> {
    return Binder(self) { base, _  in
        base.button.isSelected = !base.button.isSelected
    }
}

由于我正在使用

Binder,因此我会大量使用它,因为可以自然地防止循环引用。
subscribe的实现一样,两者都可以监视其他事件以及点击按钮,因此请应用它!

关于RxSwift的文章

[Swift]使用RxSwift实现TableView(不使用委托/ reloadData!)