【Swift】RxSwiftでボタンのタップイベントを拾う
RxSwift
はボタンのタップイベントとTableView
CollecrionView
の実装が格段に楽になるので大好きです。
今回はボタンのタップイベントの実装をいくつかご紹介します。
subscribe(_ on:)を使う
subscribe(_ on:)の説明
Subscribes an event handler to an observable sequence.
- parameter on: Action to invoke for each event in the observable sequence.
- returns: Subscription object used to unsubscribe from the observable sequence.
つまり監視できるもののイベントを拾えるのです。
これを使ってButton
のタップイベントを拾うとこんな感じになります。
button.rx.tap.subscribe({ [weak self] _ in
// ボタンタップでキックしたいアクションを記述
}).disposed(by: disposeBag)
[weak self]
は[unowned self]
でももちろんOKですが、私は管理が面倒なので[weak self]
を使うことが多いです。
循環参照一度起こすと結構調査が面倒だし、平気でクラッシュするから脳筋weak
しちゃうんですよね。。
[weak self]と[unowned self]についてはこちらの記事が面白かったです
bind(to observers:)を使う
私は普段この実装方法を取り入れていることが多いです。
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に関する記事
Author And Source
この問題について(【Swift】RxSwiftでボタンのタップイベントを拾う), 我々は、より多くの情報をここで見つけました https://qiita.com/_asa08_/items/a9492b760a48965ecd9e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .