我是rx的新手,并对一个问题感到好奇:rx中的替代替换是什么?
对于我读过的有关rx的代码,按钮的配置如下:
override func viewDidLoad() {
super.viewDidLoad()
updateConversation()
self.naviAvatar.rx.tap
.debug("naviAvatar tap")
.subscribe(onNext: { _ in
print("didTapNaviAvatar")
})
.disposed(by: disposeBag)
}
而且效果很好。
但是我遇到一个问题,在子类中我想使按钮静音,而我不知道如何在rx中实现。
在我之前的代码中,我有以下代码:
class A: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapNaviAvatar(_:)))
self.naviAvatar.addGestureRecognizer(tapRecognizer)
}
@objc func didTapNaviAvatar(_ sender: Any) {
print("didTapNaviAvatar")
}
//...
}
class B: A {
// Silent the method, do nothing.
override func didTapNaviAvatar(_ sender: Any) {}
//...
}
我想到了可以用naviAvatar
的{{1}}方法重新配置B
的想法。但是,如果我有许多关于按钮行为的代码(例如20行,包括映射,过滤,配置),但是我只想更改一行(例如在触摸时覆盖按钮标题),该怎么办?
任何帮助将不胜感激。
答案 0 :(得分:0)
不需要弱自我,因为轻击操作不会触发延迟或异步方法。因此,您只需传递该方法,它将触发在B类中覆盖的方法。
class A: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
naviAvatar.rx.tap
.debug("naviAvatar tap")
.subscribe(onNext: didTapNaviMoreButton)
.disposed(by: disposeBag)
}
@objc func didTapNaviAvatar(_ sender: Any) {
print("didTapNaviAvatar")
}
}
class A: B {
override func didTapNaviAvatar(_ sender: Any) {}
}