RxSwift - 重播点击事件
RxSwift - Replayed Tap Events
当用户点击按钮时,我会显示一个 selection 屏幕。结果被传递到我的视图模型中。代码如下所示:
locationButton.rx.tap
.flatMapLatest(wireframe.displayPlaceSelection)
.filterNil()
.map(DiscoverLocationSelection.location)
.subscribe(onNext: viewModel.updateLocation(with:))
.disposed(by: disposeBag)
此代码工作正常,用户可以 select 一个位置,然后使用按钮返回到此屏幕。
如果用户第二次点击按钮,displayPlaceSelection()
函数将被调用两次。如果用户第三次执行此操作,该函数将被调用 3 次。这导致多个视图控制器被推到彼此之上。
我怎样才能阻止这些事件堆积起来?
效果是这样的:
我可以假设每次打开此 vc 时都会调用此代码(订阅),因此您有很多点击事件的订阅者。这段代码在哪里?例如 viewDidLoad
或 viewWillAppear
。
当用户点击按钮时,我会显示一个 selection 屏幕。结果被传递到我的视图模型中。代码如下所示:
locationButton.rx.tap
.flatMapLatest(wireframe.displayPlaceSelection)
.filterNil()
.map(DiscoverLocationSelection.location)
.subscribe(onNext: viewModel.updateLocation(with:))
.disposed(by: disposeBag)
此代码工作正常,用户可以 select 一个位置,然后使用按钮返回到此屏幕。
如果用户第二次点击按钮,displayPlaceSelection()
函数将被调用两次。如果用户第三次执行此操作,该函数将被调用 3 次。这导致多个视图控制器被推到彼此之上。
我怎样才能阻止这些事件堆积起来?
效果是这样的:
我可以假设每次打开此 vc 时都会调用此代码(订阅),因此您有很多点击事件的订阅者。这段代码在哪里?例如 viewDidLoad
或 viewWillAppear
。