如何在 RxSwift 中过滤带有按钮标题的按钮点击?

Posted

技术标签:

【中文标题】如何在 RxSwift 中过滤带有按钮标题的按钮点击?【英文标题】:How to filter button tap with button title in RxSwift? 【发布时间】:2019-06-04 11:22:18 【问题描述】:

我们是否可以根据按钮标题过滤按钮点击事件,如下所示..!!

button.rx.tap
 .filter  ($0.titleLabel.text.count)!> 0 

【问题讨论】:

您提供的代码有什么问题?它应该工作。这不工作吗? @Zich 不,它不起作用,我刚刚添加了明确的问题 【参考方案1】:

可能有办法做到这一点,但这不是正确的做法。您以编程方式更改了按钮标题,因此应在此处引用执行此操作的代码。不要把视图当作模型来使用。

例如:

func example(title: Observable<String>, button: UIButton, bag: DisposeBag) -> Observable<String> 
    title
        .bind(to: button.rx.title(for: .normal))
        .disposed(by: bag)

    return button.rx.tap
        .withLatestFrom(title)
        .filter  !$0.isEmpty 

【讨论】:

【参考方案2】:

终于能够做到以下几点,不知道它的完美与否,但服务于目的..!!!

 button.rx.tap
                  .map(return button.titleLabel?.text!.lowercased()!)
                        .asDriver(onErrorJustReturn: "")
                        .drive(answerLabel.rx.text)
                        .disposed(by: bag)

【讨论】:

以上是关于如何在 RxSwift 中过滤带有按钮标题的按钮点击?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RxSwift 中为整个应用程序中的单元格和按钮设置动画?

如何在 RxSwift 中使用 1 个按钮创建登录和注销?

带有 UiTextField 的 RxSwift

RxSwift:如何通过多个视图模型传递控制事件

使用 RxSwift 和 RXCocoa 验证按钮单击时的所有文本字段

如何使用过滤器按钮构建重叠搜索栏