В этом посте мне бы хотелось затронуть извечный вопрос об организации навигации и передачи данных между экранами в IOS приложениях. В первую очередь, я хотел бы донести концепт своего подхода, а не убедить вас использовать его как волшебную таблетку. Тут не будут рассматриваться различные архитектурные подходы или возможность использования UlStoryboard с segues, в целом я опишу еще один возможный способ достигнуть желаемого со своими плюсами и минусами. И так, начнем!
Предыстория:
Безусловно, на реализацию навигации и организацию транспорта данных в проекте влияет выбор архитектурного подхода, однако и сам подход складывается из ряда обстоятельств: состав команды, time to market, состояние ТЗ, масштабируемость проекта и многое др., определяющими факторами для меня стали:
- обязательное использование MVVM;
- возможность быстро добавлять новые экраны(контроллеры, и их вью модели) в процесс навигации;
- изменения в бизнес- логике не должны затрагивать навигацию;
- изменения в навигации не должны затрагивать бизнес-логику;
- возможность быстро переиспользовать экраны без внесения исправлений в навигацию;
- возможность быстро получить представление о существующих экранах;
- возможность быстро получить представление о зависимостях в проекте;
- не повысить порог вхождения разработчиков на проект.