Bind RxSwift:绑定PublishSubject到多个按钮和接收发送方

Bind RxSwift:绑定PublishSubject到多个按钮和接收发送方,bind,rx-swift,publishsubject,Bind,Rx Swift,Publishsubject,我正在开发一款显示26个(字母表)按钮的应用程序。现在,它们都连接到ViewController中的同一个函数,该函数依次调用ViewModel中的另一个函数,最后该函数调用publishSubject.onNext()。ViewController订阅PublishSubject,这就是整个循环 我之所以这样做,而不是将发布主题绑定到按钮的点击,是因为我必须知道发送者是谁。有没有办法这样做?如果没有,有没有比我头脑中更聪明的设计 谢谢 您可以使PublishSubject发送字符串,然后每次点

我正在开发一款显示26个(字母表)按钮的应用程序。现在,它们都连接到
ViewController
中的同一个函数,该函数依次调用
ViewModel
中的另一个函数,最后该函数调用
publishSubject.onNext()
ViewController
订阅
PublishSubject
,这就是整个循环

我之所以这样做,而不是将发布主题绑定到按钮的点击,是因为我必须知道发送者是谁。有没有办法这样做?如果没有,有没有比我头脑中更聪明的设计


谢谢

您可以使
PublishSubject
发送
字符串
,然后每次点击按钮时,您都可以发送按钮标题作为事件数据

publishSubject.onNext(发件人.标题)

这样,您就可以将发送者与视图模型区分开来,并保留当前的设计

更新:

在再次阅读您的问题后,我意识到您正试图实现一种比当前更具反应性的方式。因此,您不必从所有按钮中拉出
IBActions
,只需让
iBouts
viewDidLoad
将所有这些按钮绑定到
PublishSubject
。大概是这样的:

aButton
   .rx
   .tap.map { _ in 
      aButton.title
   }
   .bindTo(viewModel.buttonTapped)
   .disposed(by:disposeBag)

您可以将
PublishSubject
设置为发送
String
,然后每次点击按钮时,都可以将按钮标题作为事件数据发送

publishSubject.onNext(发件人.标题)

这样,您就可以将发送者与视图模型区分开来,并保留当前的设计

更新:

在再次阅读您的问题后,我意识到您正试图实现一种比当前更具反应性的方式。因此,您不必从所有按钮中拉出
IBActions
,只需让
iBouts
viewDidLoad
将所有这些按钮绑定到
PublishSubject
。大概是这样的:

aButton
   .rx
   .tap.map { _ in 
      aButton.title
   }
   .bindTo(viewModel.buttonTapped)
   .disposed(by:disposeBag)

如果我了解您在哪个流上的designFilter,您可以使用类似于此的筛选器{$0==“a”}?0美元是多少?我需要ViewModel知道在ViewController中按下了什么按钮,这就是问题:)我想你需要为我添加一些代码来理解这个问题你可以使用像这样的过滤器{$0==“a”},如果我理解你在什么流上的设计过滤器?0美元是多少?我需要ViewModel知道ViewController中按下了什么按钮,这就是问题:)我想你需要添加一些代码让我理解这个问题谢谢!正是我需要的!谢谢正是我需要的!