我刚刚开始学习RxSwift
。我添加了一个UIButton
,其中包含一个可观察到的值和一个suscribe方法,该方法应在每次数据更改时触发,但我无法正常工作。我想念什么?
@IBAction func buttonAction(_ sender: Any) {
publishableSubject.onNext("GURKA")
}
override func viewDidLoad() {
super.viewDidLoad()
let bag = DisposeBag()
_ = publishableSubject.subscribe(onNext: {
print($0)
}).disposed(by: bag)
}
您的处理包是本地的,因此在viewDidLoad退出时它将取消初始化,这将处理您设置的可观察链。对于您所描述的内容,只需将处理袋移动到班级即可解决。
let publishableSubject = PublishSubject<String>()
let bag = DisposeBag()
@IBAction func buttonAction(_ sender: Any) {
publishableSubject.onNext("GURKA")
}
override func viewDidLoad() {
super.viewDidLoad()
publishableSubject
.subscribe(onNext: {
print($0)
})
.disposed(by: bag)
}
您可能还想考虑导入RxCocoa
库。它为您设置了操作,因此您可以编写更少的代码:
override func viewDidLoad() {
super.viewDidLoad()
myButton.rx.tap
.map { "GURKA" }
.subscribe(onNext: {
print($0)
})
.disposed(by: bag)
}