【问题标题】:Typhoon: Assembly and Storyboard-Created ViewControllersTyphoon:Assembly 和 Storyboard 创建的 ViewControllers
【发布时间】:2013-09-25 07:28:03
【问题描述】:

如何将 Typhoon 与 iOS 故事板一起使用,其中视图控制器由系统隐式生成?我需要在 prepareForSegue 方法中做一些特别的事情吗?

【问题讨论】:

    标签: ios objective-c uistoryboardsegue typhoon


    【解决方案1】:

    积压中有一个 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 的一部分发布。

    【讨论】:

    • 听起来很棒。 Typhoon 会让基于故事板的视图控制器更容易测试吗?和他们一起考虑 TDD 很痛苦。
    • @fatuhoku 是的,DI 的所有常规好处:易于测试、易于维护、良好的凝聚力等。
    • 啊哈。如果我可以提出一个建议,那就是该框架需要在用户指南中提供更多示例。例如,情节提要令人困惑,因为在实际代码中,运行时决定加载哪些 VC,并有效地为您管理视图控制器依赖项。目前尚不清楚台风如何拦截这个过程,如果有的话。我已经看到您需要 TyphoonFactory 或类似的东西,但它是否知道正在发生的转场?
    • Typhoon 2.0 功能发布时会有文档说明。随着 Typhoon 2.0 的发布,我们将专注于提供更好的文档、教程、博客等。 . (甚至可能有一本书)。 .同时,请随时提出问题,在 StackOverflow 等上提问。感谢您成为 Typhoon 的早期采用者!
    【解决方案2】:

    TyphoonStoryboard 非常简单

    通过bootstrapping Typhoon in your plist,连同通常的 UILaunchStoryboardName 和 UIMainStoryboardFile,Typhoon 将确保所有 Storyboard 都是 TyphoonStoryboard 的实例。与普通 Storyboard 完全一样使用,另外还有一个好处是依赖项将根据 TyphoonAssembly 类中的定义注入。

    您可以选择为每个 viewController 指定应使用的定义。为此,请在情节提要中使用“typhoonKey”运行时属性。否则将使用与控制器类匹配的定义。示例:

    此功能的文档是 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 2013-02-20
      • 2016-01-08
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多