当用户点击按钮时,我会显示一个选择屏幕。结果传递到我的视图模型中。代码如下所示:
locationButton.rx.tap
.flatMapLatest(wireframe.displayPlaceSelection)
.filterNil()
.map(DiscoverLocationSelection.location)
.subscribe(onNext: viewModel.updateLocation(with:))
.disposed(by: disposeBag)
此代码工作正常,用户可以选择一个位置,并使用按钮返回到此屏幕。
如果用户再次点击该按钮,则会调用displayPlaceSelection()
函数两次。如果用户第三次这样做,该函数将被调用3次。这导致多个视图控制器被推到彼此之上。
如何阻止这些事件堆叠?
效果如下:
答案 0 :(得分:2)
我可以假设每次打开此vc时都会调用此代码(subscribe),因此您有许多tap事件的订阅者。这段代码在哪里?例如viewDidLoad
或viewWillAppear
。