недавно я читал о принципе инверсии зависимостей, который гласит, что модуль высокого уровня не должен зависеть от модуля низкого уровня, они оба должны зависеть от абстракции.
protocol ViewControllerProtocol {
func saveButtonTapped()
}
struct ViewModel : ViewControllerProtocol{
func saveButtonTapped() {
//save data...
print("forward save request")
}
func statusArrived(){
// inform viewcontroller about updating UI
}
}
class ViewController: UIViewController {
private var vm : ViewControllerProtocol?
required init(viewmodel : ViewModel){
self.vm = viewmodel
super.init(nibName: nil, bundle:nil)
}
@IBAction func btnSaveTapped(_ sender: Any) {
vm?.saveButtonTapped()
}
}
Следуя принципу инверсии зависимости, я могуобщаться между viewcontroller -> Viewmodel.
мой вопрос, как общаться в обратном направлении? то есть. Форма представления модели для просмотра контроллера? я думаю, создавая другой протокол, и viewcontroller реализует этот протокол ....
как общаться в обратном направлении? то есть. Форма представления модели для просмотра контроллера?