Tengo la siguiente arquitectura MVVM . No es algo especial, solo para una mejor comprensión.
Cual es la pregunta principal es:
¿Cómo necesito vincular la acción UIButton para hacer alguna reacción en UIViewController ?
Intento hacerlo de la siguiente manera:
1) En primer lugar, agrego la propiedad como un cierre para ViewModel :
var cellButtonActionCallback: (() -> Void)? 2) Agrego la misma propiedad para CellViewModel :
var buttonCallback: (() -> Void)? 3) Cuando configuro CellViewModel hago:
cellViewModel.buttonCallback = cellButtonActionCallback 4) Y finalmente agregue el destino para UIButton , y el selector buttonAction también llama a buttonCallback :
button.bind { cellViewModel.buttonAction() } Parece que el cierre que defino en UITableViewController pasa por todos los viewModels de vista, lo que no es una buena idea en mi camino.
En realidad, este enfoque funciona bien, pero no me gusta.
¿Cuál es la mejor manera de hacer lo mismo?