2017-09-20 30 views
0

當用戶點擊一個按鈕時,我會顯示一個選擇屏幕。結果被傳遞到我的視圖模型。代碼如下所示:RxSwift - 重播的點擊事件

locationButton.rx.tap 
      .flatMapLatest(wireframe.displayPlaceSelection) 
      .filterNil() 
      .map(DiscoverLocationSelection.location) 
      .subscribe(onNext: viewModel.updateLocation(with:)) 
      .disposed(by: disposeBag) 

此代碼工作正常,用戶可以選擇一個位置,並將按鈕返回到此屏幕。

如果用戶再次點擊該按鈕,displayPlaceSelection()函數被調用兩次。如果用戶第三次這樣做,該函數將被調用3次。這導致多個視圖控制器被推在彼此之上。

如何阻止堆疊起來的這些事件?

的大意是這樣的:當你打開這個VC,因此你有很多用戶輕敲事件

RxSwift Tap Replay

+0

我可以假設每次打開此vc時都會調用此代碼(訂閱),因此您有許多訂閱者可以使用該點擊事件。這段代碼在哪裏?例如,「viewDidLoad」或「viewWillAppear」。 –

+0

你完全正確!非常感謝。 請發表評論作爲回答,我會接受它。 –

回答

1

我想,這個代碼(認購)被稱爲每次。這段代碼在哪裏?例如,viewDidLoadviewWillAppear