【发布时间】:2016-10-06 17:54:08
【问题描述】:
我将按下的按钮绑定到路由器中的PublishSubject,如下所示:
hambugerButton
.rx_tap
.bindTo(router.openMenu)
.addDisposableTo(disposeBag)
在我的路由器中:
let openMenu = PublishSubject<Void>()
//...
openMenu
.map { _ in
menuNavigationController
}
.bindTo(mainNavigationController.rx_present())
.addDisposableTo(disposeBag)
但是,当控制器被释放时,按钮会发送“完成”信号。当PublishSubject 接收到它时,它不会对来自另一个控制器的信号做出反应(这是可以理解的:这是Observable 的保证)。
我想出的唯一解决方案:
hambugerButton
.rx_tap
.subscribeNext {
self.router.openMenu.onNext()
}
.addDisposableTo(disposeBag)
这看起来很丑,有点破坏了反应式接口的想法。
我的问题是,有没有办法避免Completed 事件传播到PublishSubject?我可以制作一些Observer 来忽略此类事件吗?
【问题讨论】: