将3个按钮的点击事件与rxSwift相结合

将3个按钮的点击事件与rxSwift相结合,swift,rx-swift,rx-cocoa,Swift,Rx Swift,Rx Cocoa,我有三个按钮 @IBOutlet弱var编辑按钮:UIButton!//1. @IBOutlet弱var editDataButton:UIButton!//2. @IBOutlet弱var deleteDataButton:UIButton!//3. 点击任何一个按钮,我想调用下面的方法。用正确的数字 func didTap->可观察{ } didTap.subscribeonNext:{tag in 开关标签{ 案例1: 打印并点击编辑几何图形 案例2: 打印并点击编辑数据 案例3: 打印并

我有三个按钮

@IBOutlet弱var编辑按钮:UIButton!//1. @IBOutlet弱var editDataButton:UIButton!//2. @IBOutlet弱var deleteDataButton:UIButton!//3. 点击任何一个按钮,我想调用下面的方法。用正确的数字

func didTap->可观察{ } didTap.subscribeonNext:{tag in 开关标签{ 案例1: 打印并点击编辑几何图形 案例2: 打印并点击编辑数据 案例3: 打印并点击删除几何图形 违约: 打印无效的抽头 } }.处置人:处置人
请帮助使用Observable在didTap方法中编写代码?我认为这可以通过使用联合收割机操作符来实现。但我不知道如何编写此代码。

我将使用枚举来避免默认情况:

enum Actions {
  case editGeom
  case editData
  case deleteGeom
}

Observable.merge(
  editGeomButton.rx.tap.map { _ in Actions.editGeom },
  editDataButton.rx.tap.map { _ in Actions.editData },
  deleteDataButton.rx.tap.map { _ in Actions.deleteGeom }
).subscribe(onNext: {
  switch $0 {
  case .editGeom:
    print("Did tap Edit Geom")
  case .editData:
    print("Did tap Edit Data")
  case .deleteGeom:
    print("Did tap Delete geom")
  }
}).disposed(by: disposeBag)

基本上,它只是将每个点击映射到一个值,然后再将它们合并在一起

使用动作类型的好模式,感觉像是重复使用。