Я создаю приложение в Swift 4, используя MVVM без реактивного. Я хотел бы вызвать обновления viewmodel из модели View tableView, чтобы не превращать ее в код spagetthi. Вместо того чтобы создавать одну модель представления для каждой коллекции ViewCell, я пытаюсь обновить ее из основной модели представления.
//Spaghetti option (VM - ViewModel , VC - ViewController)
//TableVC - TableVM
//Cell- CellVM
//CollectionCell- CollectionVM
И обновление моделей и менеджеров. Я использую метод ниже, чтобы делегировать обратно в Main TableViewController, чтобы дать MainViewModel всю ответственность. Так как у меня есть несколько CollectionViews в разных ячейках, я думаю, что это лучший способ сделать. Есть предложения?
func setCollectionViewDataSourceDelegate<D: UICollectionViewDataSource & UICollectionViewDelegate>(dataSourceDelegate: D, forRow row:Int){
self.collectionView.delegate = dataSourceDelegate
self.collectionView.dataSource = dataSourceDelegate
self.collectionView.tag = row
self.collectionView.reloadData()
}