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
只提供信息给 RBStoryboardSegue
。RBStoryboardSegue
在表示时重定向 segue。这种重定向避免了在类似于 -prepareForSegue:sender:
的方法中处理 UIViewController
容器和解析代理的复杂性。新的工作流程归功于 @MBulli。
您的应用的故事板必须首先分解成它们的自然模块。查看这篇指南以获取一些提示。
在任何您想要创建跳转到不同故事板转换的地方,创建一个表示要推送场景的 UIViewController
。
为这些代理视图控制器创建所需的 segue 类型(推送、模态、自定义)。为了利用新的链接,将类型设置为自定义并选择 RBStoryboardPushSegue
、RBStoryboardModalSegue
或 RBStoryboardPopoverSegue
之一。您还可以为自定义转换创建 RBStoryboardSegue
的子类。
在身份检查器中,将每个代理视图控制器的类别类型更改为 RBStoryboardLink
。
在身份检查器中,添加一个或多个用户定义的运行时属性。
NO
。如果使用其中一个RBStoryboardSegue
,则不使用此属性。RBStoryboardSegue
,则不使用此属性。UITabBarController
和UINavigationController
时。将UINavigationController
放置在与此处的UITabBarController
相同的爱的故事板。提供了两个演示,以展示如何使用RBStoryboardLink
标准的直接流程。
选项卡流程。
欢迎贡献。我更倾向于响应pull请求,而不是问题。示例应用程序使用KIF进行自动化测试。任何pull请求必须在合并之前通过测试。如果引入了新功能,pull请求还必须为新行为添加测试。如果您想贡献,但不知道从何下手,请查看问题列表。
RBStoryboardLink
许可采用MIT许可证,内容如下
版权所有(C)2012-2015罗伯特·布朗
特此允许任何人免费获得本软件及其关联文档副本(“软件”),在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供副本的个人执行上述操作,但受以下条件约束
上述版权声明和本许可声明应包含在所有副本或实质性部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯他人权利的保证。在任何情况下,作者或版权所有者对任何索赔、损害或其他责任,无论基于合同、侵权或其他法律,因软件或其使用或其他交易而产生或与之相关,均不承担责任。