【问题标题】:Why isn't my rx subscription triggered on my onNext?为什么我的 onNext 没有触发我的 rx 订阅?
【发布时间】:2020-01-08 13:27:00
【问题描述】:

玩弄Rx Swift 我遇到了我的subscription 没有触发的情况。

我有两个viewControllers。第一个有一个labelsubscriber 应该更新,如下所示:

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 的实例相同的实例是一个问题。我创建了一个新实例并订阅了它。谢谢您的帮助。如果您希望我投票并检查答案,请写下正确的回复:)

标签: ios swift rx-swift publishsubject


【解决方案1】:

请确保您订阅的PublishSubject 与您发布活动的同一PublishSubject 相同。确认这一点的最简单方法是设置断点并检查地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多