Похоже, вы проделали довольно хорошую работу по внедрению MVVM здесь!Общее правило MVVM заключается в том, что если бы вы удалили все «визуальные элементы» из контроллера представления, он выглядел бы идентично вашей модели представления (т. Е. Модель представления содержит всю информацию).К сожалению, API здесь затрудняет передачу контроллера представления напрямую его модели.Один из возможных вариантов - заставить модель представления реализовать протокол делегата модели представления ...
protocol viewModelDelegate {
func getViewController() -> viewController
}
Контроллер представления должен реализовать этот протокол и вернуть self.Затем вы можете получить свой контроллер представления, вызвав delegate?.getViewController()
.
Честно говоря, этот вид злоупотребляет шаблоном делегата и технически все еще передает TYPE контроллера представления в модель представления, ха-ха, так что это может быть нелучший вариант для вас!