我想使用Rxswift
而不是IBActions
来解决下面的问题,
我有一个UISwitch
,我想订阅其中的value changed事件,
我通常用这种方式订阅电子邮件
@IBOutlet weak var myButton: UIButton!
myButton
.rx
.tapGesture()
.when(.recognized)
.subscribe(onNext : {_ in /*do action here */})
字符串
有人知道如何订阅UISwitch
控件事件吗?
5条答案
按热度按时间v8wbuo2f1#
我找到了我要找的答案,为了订阅和控制事件,我们应该做以下事情:
字符串
hc8w905p2#
字符串
of1yzvn43#
有几种方法可以做到这一点,但这是我通常的做法:试试这个。
字符串
我希望这能帮上忙。
编辑:
另一种方法是订阅
UISwitch
的value
属性,如下所示:型
至于你的评论:
这对我很有用,谢谢,但我更喜欢订阅控制事件本身,而不是值。
我们可以在下面这样做,我不确定是否有比这更好的方法。因为
UISwitch
是UIControl
对象,所以你可以订阅它的.valueChanged
事件,如下所示:型
更多信息:https://developer.apple.com/documentation/uikit/uiswitch
vql8enpb4#
下面的代码是基于prex的答案编写的。请随时纠正或提出任何改进建议。
RxSwift/RxCocoa 4.4,iOS 12,Xcode 10
字符串
在这个例子中,当用户(并且只有用户)更改
UISwitch
的状态时,我们会得到通知。然后我们更新viewModel
。反过来,
viewModel
的任何观察者都会被告知状态的变化,允许他们更新UI等。例如
型
...
型
请参阅:https://stackoverflow.com/a/53479618/1452758
imzjd6km5#
我放弃了上面的答案,只有最简单的一个在下面工作:
字符串