RxSwift:将实际的可观察值传递给另一个视图控制器吗?

问题描述 投票:0回答:1

我有一个视图控制器,需要了解从另一个视图控制器设置的布尔变量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内部调用它时,我无法将其设置为默认值以便稍后进行更新。因此,是否有可能像这样传递实际的观测值?

swift observer-pattern rx-swift swinject
1个回答
0
投票

为什么仍然需要将ReplaySubject转换为Observable

在我看来,您可以只使用Relay(如果您想要初始状态,则可以使用BehaviorRelay)(不完整,不会出错,这正是您所需要的),然后通过[C0 ]直接到vc2。

© www.soinside.com 2019 - 2024. All rights reserved.