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 时都会调用此代码(订阅),因此您有很多点击事件的订阅者。这段代码在哪里?例如 viewDidLoadviewWillAppear