Как внедрить viewmodel во время инициализации раскадровки viewcontroller? - PullRequest
0 голосов
/ 10 ноября 2019

ранее я инициализировал объект viewmodel внутри viewcontroller, но затем, когда я прочитал о принципах SOLID (D = invistanceion), мы не должны раскрывать представление модели внутри viewcontroller. поэтому я подумал, что если я смогу внедрить viewmodel внутри viewcontroller во время инициализации (viewcontroller уже спроектирован в файле раскадровки), то это должно сработать.

что-то вроде ... ViewController с пользовательским init, например ... func init (сviewModel: ViewModel)

но возможно ли это?

1 Ответ

0 голосов
/ 10 ноября 2019

С раскадровками у вас не может быть чистого инициализатора вырезки!

Когда вы вызываете viewController storyboard.instantiateViewController(withIdentifier: "viewController"), СИСТЕМА сделает свое дело и вызовет

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
}

Вы никогда не сможете перенаправитьэтот вызов другого метода init. Тем не менее, для программно созданных viewController или nib созданных viewControllers вы можете перенаправить этот вызов, как показано выше.


Вы можете либо использовать xibs и создавать свои собственные init методы, либо использовать полный программный подход.

Я обсуждал это полностью здесь

...