将3个按钮的点击事件与rxSwift相结合
我有三个按钮 @IBOutlet弱var编辑按钮:UIButton!//1. @IBOutlet弱var editDataButton:UIButton!//2. @IBOutlet弱var deleteDataButton:UIButton!//3. 点击任何一个按钮,我想调用下面的方法。用正确的数字 func didTap->可观察{ } didTap.subscribeonNext:{tag in 开关标签{ 案例1: 打印并点击编辑几何图形 案例2: 打印并点击编辑数据 案例3: 打印并点击删除几何图形 违约: 打印无效的抽头 } }.处置人:处置人将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: 打印并
请帮助使用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)
基本上,它只是将每个点击映射到一个值,然后再将它们合并在一起 使用动作类型的好模式,感觉像是重复使用。