我试图在按钮更改其“isSelected”状态时收到通知。
我有一个UIButton设置,目标是更改他的isSelected
:
let button = UIButton()
button.addTarget(button, action: #selector(toggleSelected), for: .touchUpInside)
....
@objc func toggleSelected() {
self.isSelected = !self.isSelected
}
而且我想要像
button.rx.isSelectedChanged
这样的东西可以订阅事件。我试图用ControlProperty扩展UIButton.rx:
extension Reactive where Base: UIButton {
public var isSelectedChanged: ControlProperty<Bool> {
return base.rx.controlProperty(
editingEvents: [.allEditingEvents, .valueChanged],
getter: { $0.isSelected },
setter: { $0.isSelected = $1 })
}
}
和类似的东西:
button.rx.observe(Bool.self, "isSelected")
.takeUntil(button.rx.deallocated)
.subscribe(onNext: { print("selcted \($0)") })
但是我都没有button.isSelected更新。
什么是这样做的好方法?
编辑:
在@ daniel-t回复之后,我实现了here。
最佳答案
坦率地说,没有好的方法来做,尝试是错误的。由于某种原因,通过编程方式更改了按钮的选定状态。不要尝试将模型状态存储在UI中,而应让UI反映模型状态。
看什么叫toggleSelected()
。可能可以将其转换为rx,而您可以订阅它。
关于ios - 如何使用RxSwift订阅UIButton isSelected更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54198557/