RxSwift: как передать событие управления через несколько моделей представления

У меня есть ячейка представления коллекции с кнопкой, и я хочу передать событие управления касанием (button.rx.rap) через модель представления ячейки, через модель представления контроллера представления и в сам контроллер представления коллекции (поскольку мне нужно представить контроллер представления событие касания).

Как этого можно добиться Rx-способом (в идеале без использования субъектов)?


person Sencha    schedule 06.03.2017    source источник


Ответы (1)


Мы делаем это с помощью PublishSubject в модели представления. Например

class CellViewModel {

   let optionButtons: [TripOptionButtonsCellView.TripOptionButtonType]
   let optionButtonTapped = PublishSubject<TripOptionButtonsCellView.TripOptionButtonAction>()

   init()

      ...                
   }

   func switchButtonValueChanged( to isOn: Bool ) {

       viewModel?.optionButtonTapped.onNext(.enableOrDisableNotifications(isEnabled: isOn))

  }

}

Затем вы можете прослушать следующее событие в своем контроллере представления и передать его туда, куда хотите. Вам просто нужно убедиться, что вы повторно подписались, потому что ваши tableviewcells могут быть переработаны.

person Frederik Jacques    schedule 09.03.2017