我有一个视图控制器,需要了解从另一个视图控制器设置的布尔变量headerCollapsed。在vc1中,我有:
headerCollapsed = ReplaySubject<Bool>.create(bufferSize: 1)
collapsedObservable = headerCollapsed.asObservable()
和一个将布尔值设置为true的函数:
func updateHeader() {
self.headerCollapsed.onNext(true)
}
然后,为避免创建进一步的依赖关系并直接调用vc1,我尝试通过依赖注入和路由器将collapsedObservable(而不是headerCollapsed)传递给vc2。我正在尝试简化问题,但是vc1和vc2之间实际上有几层。
虽然发生了什么,但是无论如何我的路由器类中的collapsedObservable都为零,当我从vc2内部调用它时,我无法将其设置为默认值以便稍后进行更新。因此,是否有可能像这样传递实际的观测值?
为什么仍然需要将ReplaySubject
转换为Observable
?
在我看来,您可以只使用Relay
(如果您想要初始状态,则可以使用BehaviorRelay
)(不完整,不会出错,这正是您所需要的),然后通过[C0 ]直接到vc2。