RBStoryboardLink 0.1.4

RBStoryboardLink 0.1.4

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年2月

Robert Brown 维护。



  • 作者:
  • Robert Brown

摘要

RBStoryboardLink 最初是一个概念验证,目前这个情况仍然大致如此。它可能并不适用于所有情况。此外,没有先了解故事板的情况下,不应使用 RBStoryboardLink

UIStoryboards 非常强大且实用。然而,为了最大限度地利用故事板,它们需要分解成自然模块。许多故事板的缺点在于编写在这些故事板之间转换的代码。通过允许在 UIStoryboards 之间进行“伪控制器的转换”(pseudo-segues),RBStoryboardLink 解决了这个问题。这些转换可以不离开界面构建器且不编写任何额外代码来完成。

依赖项

RBStoryboardLink 需要 iOS 7.0 以上。经过一些修改,它也可以支持 iOS 6,但我希望保持它的简洁性。RBStoryboardLink 由于 iOS 5 和 7 之间存在很大的功能差异,无法同时支持 iOS 5 和 7。

如何使用

注意:从 0.1.0 版本开始,有一个新的工作流程。旧的工作流程仅使用了 RBStoryboardLink。它通过充当真实视图控制器的代理来执行所有工作。在新工作流程中,RBStoryboardLink 只提供信息给 RBStoryboardSegueRBStoryboardSegue 在表示时重定向 segue。这种重定向避免了在类似于 -prepareForSegue:sender: 的方法中处理 UIViewController 容器和解析代理的复杂性。新的工作流程归功于 @MBulli

  1. 您的应用的故事板必须首先分解成它们的自然模块。查看这篇指南以获取一些提示。

  2. 在任何您想要创建跳转到不同故事板转换的地方,创建一个表示要推送场景的 UIViewController

  3. 为这些代理视图控制器创建所需的 segue 类型(推送、模态、自定义)。为了利用新的链接,将类型设置为自定义并选择 RBStoryboardPushSegueRBStoryboardModalSegueRBStoryboardPopoverSegue 之一。您还可以为自定义转换创建 RBStoryboardSegue 的子类。

  4. 在身份检查器中,将每个代理视图控制器的类别类型更改为 RBStoryboardLink

  5. 在身份检查器中,添加一个或多个用户定义的运行时属性。

    1. storyboardName(必需)要转换到的故事板的名称。
    2. sceneIdentifier(可选)要转换到的视图控制器的标识符。如果留空,这将推送第一个视图控制器。
    3. needsTopLayoutGuide(可选)是否应在故事板中的顶部布局指南中添加自定义布局约束。如果您注意到底部导航条的背景没有在状态栏后面,请将此设置为NO。如果使用其中一个RBStoryboardSegue,则不使用此属性。
    4. needsBottomLayoutGuide(可选)与上面的一样,但是用于底部指南。如果使用其中一个RBStoryboardSegue,则不使用此属性。

实现说明

  • 当在选项卡中使用UITabBarControllerUINavigationController时。将UINavigationController放置在与此处的UITabBarController相同的爱的故事板。

演示

提供了两个演示,以展示如何使用RBStoryboardLink

  • 标准的直接流程。

  • 选项卡流程。

贡献

欢迎贡献。我更倾向于响应pull请求,而不是问题。示例应用程序使用KIF进行自动化测试。任何pull请求必须在合并之前通过测试。如果引入了新功能,pull请求还必须为新行为添加测试。如果您想贡献,但不知道从何下手,请查看问题列表。

许可

RBStoryboardLink许可采用MIT许可证,内容如下

版权所有(C)2012-2015罗伯特·布朗

特此允许任何人免费获得本软件及其关联文档副本(“软件”),在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供副本的个人执行上述操作,但受以下条件约束

上述版权声明和本许可声明应包含在所有副本或实质性部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯他人权利的保证。在任何情况下,作者或版权所有者对任何索赔、损害或其他责任,无论基于合同、侵权或其他法律,因软件或其使用或其他交易而产生或与之相关,均不承担责任。