Я рассматриваю структуру очень простого ViewModel и ViewController для тестового приложения. У меня есть что-то похожее:
FirstViewController.m:
- (IBAction)launchButtonSelected:(id)sender
{
[self.viewModel launchActionSelected];
}
FirstViewModel.m:
- (void)launchActionSelected
{
// [todo] - Figure this out.
}
Когда launchButton
выбран в FirstViewController
, я хочу сделать и представить SecondViewController
.
Мои вопросы:
- Есть ли твердое эмпирическое правило, где я должен создать
SecondViewController
ViewModel? - Кто должен инициализировать
SecondViewController
? - Где я должен нажать
SecondViewController
на иерархию представления? (то есть навигация или модальное представление).
Я лично думал:
- ViewModel для
SecondViewController
, вероятно, будет создан в его инициализаторе. Это всегда приводит меня к запутанному пути: что, если я хочу передавать информацию отFirstViewModel
доSecondViewModel
? Должен ли я открытьSecondViewModel
как общедоступное свойство наSecondViewController
, чтобы я мог получить/установить значения на нем? -
FirstViewController
должен создатьSecondViewController
и -
FirstViewController
должен нажатьSecondViewController
на экран.
Моя интуиция считает это subpar: я хотел бы изолировать презентацию ViewControllers немного больше, и приложение больше ориентировано на ViewModel, но это кажется трудным сделать. (т.е. "push" ViewModels, а не ViewControllers... но "push" по сути связан с визуальной презентацией приложения, поэтому, возможно, это неправильный способ подумать об этом.)