2017-04-04 172 views
0

我想检查一些UIButtons的isSelected状态,以便提供另一个按钮的isEnabled状态。我希望只有当其中一个按钮被选中状态设置为真时,才启用后者按钮。 但是我看到您已选择仅将isSelected属性保留为Observer。UIButton.isSelected无法观察

@IBAction func checkBoxButtonTaped(sender: UIButton) { 
    sender.rx.isSelected.onNext(!sender.isSelected) 
} 

或者

@IBAction func checkBoxButtonTaped(sender: UIButton) { 
    sender.isSelected = !sender.isSelected 
} 

可观察代码:

let state = Observable.just(true) 
state.bindTo(checkBoxButton.rx.isSelected) 
    .disposed(by: disposeBag) 
state.bindTo(loginButton.rx.isEnabled) 
    .disposed(by: disposeBag) 

通过两段代码,可观察到不能工作。

+0

是你在找这个什么http://stackoverflow.com/a/40789460/1113632?我不是100%确定我明白你的问题 – KaraBenNemsi

+0

@KaraBenNemsi谢谢,但'ControlProperty'可以工作,'button.rx.isSelected'是UIBindingObserver不起作用。 – RockerHX

回答

1

你为什么不把你想要设置为启用/禁用的另一个按钮的插座。而在目标buttion行动像

@IBAction func checkBoxButtonTaped(sender: UIButton) { 
    sender.isSelected = !sender.isSelected 
    btnTarget.enabled = sender.isSelected 
} 
+1

我想使用RxSwift来控制状态。 – RockerHX

+0

我很抱歉,因为我没有与Rxswift一起工作...快乐的编码。 –

+0

谢谢,我找到了解决的办法。 – RockerHX

0

我找到一种方法设置enabled属性由Variable解决:

let checkBoxValid = Variable(true) 
_ = checkBoxValid.asObservable().bindTo(checkBoxButton.rx.isSelected) 

_ = checkBoxButton.rx.tap.subscribe(onNext: { 
    checkBoxValid.value = !checkBoxValid.value 
})