如果你点击一个 UIButton,RxSwift 是如何工作的?
How does RxSwift work if you click a UIButton?
我刚开始学习 RxSwift
。我已经添加了一个 UIButton
和一个 observable in 和一个应该在每次数据更改时触发的 suscribe 方法,但我没有让它工作。我错过了什么?
@IBAction func buttonAction(_ sender: Any) {
publishableSubject.onNext("GURKA")
}
override func viewDidLoad() {
super.viewDidLoad()
let bag = DisposeBag()
_ = publishableSubject.subscribe(onNext: {
print([=10=])
}).disposed(by: bag)
}
你的处置包是本地的,所以它会在 viewDidLoad 退出时取消初始化,这将处置你设置的可观察链。对于您所描述的情况,只需将处理包移至 class 级别即可解决问题。
let publishableSubject = PublishSubject<String>()
let bag = DisposeBag()
@IBAction func buttonAction(_ sender: Any) {
publishableSubject.onNext("GURKA")
}
override func viewDidLoad() {
super.viewDidLoad()
publishableSubject
.subscribe(onNext: {
print([=10=])
})
.disposed(by: bag)
}
您可能还需要考虑导入 RxCocoa
库。它会为您设置操作,因此您可以编写更少的代码:
override func viewDidLoad() {
super.viewDidLoad()
myButton.rx.tap
.map { "GURKA" }
.subscribe(onNext: {
print([=11=])
})
.disposed(by: bag)
}
我刚开始学习 RxSwift
。我已经添加了一个 UIButton
和一个 observable in 和一个应该在每次数据更改时触发的 suscribe 方法,但我没有让它工作。我错过了什么?
@IBAction func buttonAction(_ sender: Any) {
publishableSubject.onNext("GURKA")
}
override func viewDidLoad() {
super.viewDidLoad()
let bag = DisposeBag()
_ = publishableSubject.subscribe(onNext: {
print([=10=])
}).disposed(by: bag)
}
你的处置包是本地的,所以它会在 viewDidLoad 退出时取消初始化,这将处置你设置的可观察链。对于您所描述的情况,只需将处理包移至 class 级别即可解决问题。
let publishableSubject = PublishSubject<String>()
let bag = DisposeBag()
@IBAction func buttonAction(_ sender: Any) {
publishableSubject.onNext("GURKA")
}
override func viewDidLoad() {
super.viewDidLoad()
publishableSubject
.subscribe(onNext: {
print([=10=])
})
.disposed(by: bag)
}
您可能还需要考虑导入 RxCocoa
库。它会为您设置操作,因此您可以编写更少的代码:
override func viewDidLoad() {
super.viewDidLoad()
myButton.rx.tap
.map { "GURKA" }
.subscribe(onNext: {
print([=11=])
})
.disposed(by: bag)
}