为啥我的 onNext 没有触发我的 rx 订阅?
Posted
技术标签:
【中文标题】为啥我的 onNext 没有触发我的 rx 订阅?【英文标题】:Why isn't my rx subscription triggered on my onNext?为什么我的 onNext 没有触发我的 rx 订阅? 【发布时间】:2020-01-08 13:27:00 【问题描述】:玩弄Rx Swift
我遇到了我的subscription
没有触发的情况。
我有两个viewControllers
。第一个有一个label
,subscriber
应该更新,如下所示:
func listen()
print("In func")
let sec = storyboard?.instantiateViewController(withIdentifier: "secondvc") as! SecondViewController
sec.myRx.subscribe(onNext:
print("SUBSCRIBED", $0)
self.rxLabel.text = $0
)
如果您转到第二个viewController
,则会有一个按钮触发onNext
事件。像这样:
var myRx = PublishSubject<String>()
@IBAction func myButton(_ sender: Any)
myRx.asObserver().onNext("Hello")
所以,在我看来,当myButton
在第二个viewController
中按下时,第一个viewController
中的label
应该在返回到viewController
时更新。但据我所知,该功能已被触发,但 subscription
根本没有被触发。
【问题讨论】:
你确定你正在展示你正在实例化的同一个视图控制器吗?我问是因为那部分不在 sn-p 中。 @nanibi 你是对的。我改变了它,但它仍然没有影响结果。不过感谢您的注意。编辑答案。 @nanibi 好的,现在解决了。你是对的。没有在订阅者上使用与用于呈现第二个 vc 的实例相同的实例是一个问题。我创建了一个新实例并订阅了它。谢谢您的帮助。如果您希望我投票并检查答案,请写下正确的回复:) 【参考方案1】:请确保您订阅的PublishSubject
与您发布活动的同一PublishSubject
相同。确认这一点的最简单方法是设置断点并检查地址。
【讨论】:
以上是关于为啥我的 onNext 没有触发我的 rx 订阅?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 UIView 框架上的 observable 只在订阅后触发一次
订阅 Observable 时如何在 onNext 案例中获取状态码