Typhoon: ViewControllers, созданные на сборке и раскадровке

Как бы я использовал Typhoon с раскадровками iOS, где контроллеры представления генерируются неявно системой? Должен ли я делать что-то особенное в методах prepareForSegue?


person Jasper Blues    schedule 25.09.2013    source источник


Ответы (2)


С TyphoonStoryboard это очень просто

Путем загрузки Typhoon в ваш plist вместе с обычными UILaunchStoryboardName и UIMainStoryboardFile, Typhoon гарантирует, что все раскадровки являются экземплярами TyphoonStoryboard. Используйте точно так же, как обычную раскадровку, с дополнительным преимуществом, которое заключается в том, что зависимости будут внедрены в соответствии с определениями в ваших классах TyphoonAssembly.

При желании вы можете указать, какое определение следует использовать для каждого viewController. Для этого используйте атрибут времени выполнения 'typhoonKey' в раскадровке. В противном случае будет использоваться определение, соответствующее классу контроллера. Пример:

пример

Документация по этой функции находится здесь.

person Aleksey    schedule 21.04.2014

В бэклоге есть компонент TyphoonStoryBoard, однако он еще не реализован (см. обновление ниже).

В настоящее время существует метод -injectProperties: на фабрике компонентов, который вы можете использовать для применения внедрения зависимостей к компоненту после его создания, например. по раскадровке.

На данный момент вы можете создать подкласс UIStoryboard и вызвать -injectProperties: на контроллере представления, переопределив:

– instantiateInitialViewController
– instantiateViewControllerWithIdentifier:

Пример:

- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier {
  id instantiatedViewController = [super instantiateViewControllerWithIdentifier:identifier];
  [[TyphoonComponentFactory defaultFactory] injectProperties:instantiatedViewController];
  return instantiatedViewController;
}

Обновление:

Интеграция с TyphoonStoryBoard завершена (ожидается документация) и передана в мастер. Он будет выпущен как часть Typhoon 2.0 в ближайшие недели.

person Jasper Blues    schedule 25.09.2013
comment
Звучит безподобно. Сделает ли Typhoon контроллеры представлений на основе раскадровки более удобными для тестирования? Было больно думать о TDD с ними. - person fatuhoku; 06.04.2014
comment
@fatuhoku Да, все обычные преимущества DI: простота тестирования, простота обслуживания, хорошая согласованность и т. д. - person Jasper Blues; 06.04.2014
comment
Ахкей. Если я могу сделать предложение, то есть фреймворк нуждается в НАМНОГО больше примеров в руководстве пользователя. Раскадровки, например, сбивают с толку, потому что в реальном коде среда выполнения решает, какие VC загружать, и эффективно управляет зависимостями контроллера представления для вас. Непонятно, как Typhoon перехватывает этот процесс, если вообще перехватывает. Я видел, что вам нужен TyphoonFactory или что-то подобное, но знает ли он о происходящих переходах? - person fatuhoku; 06.04.2014
comment
Документация по этой функции Typhoon 2.0 появится, когда она будет выпущена. С выпуском Typhoon 2.0 мы сосредоточимся на улучшении документации, руководств, блогов и т. д. . (может быть даже книга). . тем временем, пожалуйста, не стесняйтесь поднимать вопросы, спрашивать в StackOverflow и т. д. спасибо за то, что вы стали первопроходцем Typhoon! - person Jasper Blues; 06.04.2014