У меня есть следующая MVVM архитектура.Это не что-то особенное, просто для лучшего понимания.
Какой главный вопрос:
Как сделатьМне нужно связать действие UIButton
, чтобы вызвать некоторую реакцию в UIViewController
.
Я пытаюсь сделать это следующим образом:
1) Прежде всего, я добавляюсвойство как замыкание для ViewModel
:
var cellButtonActionCallback: (() -> Void)?
2) Я добавляю то же свойство для CellViewModel
:
var buttonCallback: (() -> Void)?
3) Когда я настраиваю CellViewModel
, сделайте:
cellViewModel.buttonCallback = cellButtonActionCallback
4) И, наконец, добавьте цель для UIButton
, и селектор buttonAction вызывает buttonCallback :
button.bind { cellViewModel.buttonAction() }
Похожезамыкание, которое я определяю на UITableViewController
, проходит через все viewModels
, что, на мой взгляд, не очень хорошая идея.
На самом деле этот подход работает нормально, но мне он не нравится.
Какой самый лучший способ сделать то же самое?