【发布时间】:2021-04-13 12:36:26
【问题描述】:
我想做的事:
- 介绍 VC1
- 当 VC1 关闭时,显示 VC2
问题:
- 当 VC1 关闭时,VC2 不存在
脏修复: 放毫秒延迟。它解决了问题,但想知道它为什么会发生
说明:当 VC1 关闭时,我得到 viewDidDissapear 事件,因此我可以呈现 VC2
如果您需要更多详细信息,请询问。
代码:
class ViewModel {
let coordinator = Coordinator()
struct Input {
let itemSelected: Driver<IndexPath>
}
struct Output {
let presentVC1: Driver<Void>
let presentVC2: Driver<Void>
}
func transform(input: Input) -> Output {
let navigateToVC1 = input.itemSelected
.flatMap { [coordinator] in
return coordinator.transition(to: Scene.VC1)
}
let navigateToVC2 = navigateToVC1
.delay(.milliseconds(1))
.flatMap { [coordinator] in
return coordinator.transition(to: Scene.VC2)
}
return Output(presentVC1: presentVC1, presentVC2: presentVC2)
}
协调员代码:
func transition(to scene: TargetScene) -> Driver<Void> {
let subject = PublishSubject<Void>()
switch scene.transition {
case let .present(viewController):
_ = viewController.rx
.sentMessage(#selector(UIViewController.viewDidDisappear(_:)))
.map { _ in }
.bind(to:subject)
currentViewController.present(viewController, animated: true)
return subject
.take(1)
.asDriverOnErrorJustComplete()
}
【问题讨论】:
标签: ios swift rx-swift rx-cocoa