No description, website, or topics provided.
Objective-C Python Ruby
Switch branches/tags
Nothing to show
Clone or download
etolstoy Переработана инициализация роутеров: теперь destinationViewController…
… конфигурируется с помощью блока, задаваемого в конкретных методах роутера
Latest commit 6823a5a Jan 26, 2015
Permalink
Failed to load latest commit information.
MultipleStoryboardsApp.xcodeproj
MultipleStoryboardsApp.xcworkspace/xcuserdata/etolstoy.xcuserdatad
MultipleStoryboardsApp
Pods
Scripts
.gitignore Обновлен gitignore Nov 30, 2014
Podfile
Podfile.lock
README.md

README.md

MultipleStoryboardsSample

Чем опасно использование одной огромной storyboard в проекте?

  • Тесная связанность всех экранов,
  • Запутанность логики переходов прямо пропорциональна количеству экранов,
  • Совместная работа над интерфейсом для двух и более разработчиков превращается в боль.

Решение проблемы достаточно простое:

  • Выделяем на карте экранов приложения общие User Stories,
  • Экстраполируем их на контроллеры Main.storyboard,
  • Переносим эти группы в отдельные storyboards.

Для реализации навигации между несколькими storyboards используется MSALinkedStoryboardSegue - кастомная segue, в identifier которой задаются все необходимые для перехода данные. Кроме того, для освобождения View Controller'ов от лишних обязанностей вся навигация осуществляется при помощи роутеров. Все, что View Controller знает о навигации:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self.router showBreedViewControllerFromSourceController:self
                              withCatBreed:self.breedsArray[indexPath.row]];
}

Помимо этого в проекте рассмотрены следующие вопросы:

  • Использование Dependency Injection для развязывания контроллеров и реализаций роутеров,
  • Работа с Tab-based приложением в контексте использования нескольких storyboards,
  • Простое переиспользование экранов из xib на нескольких storyboards,
  • Автоматическая генерация констант для segue identifiers.

Текущая версия

1.0

Используемые компоненты