此框架提供了一个可以处理加载、管理和在不同Storyboard或提供的UIViewControllers之间切换的控制器。从控制器中移除切换代理代码,允许你抛弃不活动的控制器是该框架的主要功能。
使用Carthage添加以下内容到您的Cartfile中:
github "bromas/ApplicationVC"
在将框架添加到您的项目后,将应用程序的主Storyboard中您的初始视图控制器的类类型设置为ActivityViewController。要显示初始活动/Storyboard,请将initialActivityIdentifier设为用户自定义运行时属性,其值为您要加载的第一个Storyboard的名称。(如果这还不清楚,请查看示例应用程序中的Main.storyboard的Identity Inspector。)
'加载活动'基本上是指查找同名的Storyboard,并加载它的初始视图控制器。
为了测试这种方式,请创建两个新的Storyboard(在Main.storyboard之外),并如上建议将其中一个的名称设置为initialActivityIdentifier。创建并执行一个ActivityOperation以切换到第二个Storyboard。
ActivityOperation(identifier: "Second", animationType: .TransitionCurlUp, duration: 0.4).execute()
如果您继承自ActivityViewController并重写prepareForActivity(identifier: String, controller: UIViewController),您可以处理任何需要的初始化/配置。(只在创建新的控制器时运行,不是在重新显示时。)
如果不希望/需要构建Storyboard,您可以添加闭包,以特定键生成UIViewControllers。
activitiesController.registerGenerator("Generated") {
return GeneratedController()
}
不活跃的活动按键(activityIdentifier)存储,并按照它们最后呈现的顺序存储。调用切换到已经呈现的活动键将简单地重新显示相同的控制器。然而,如果你想在下次呈现该键时启动该storyboard/UIViewController的新版本,你可以刷新位于Activity Identifier下的视图控制器。
activitiesController.flushInactiveActivitiesForIdentifier(...)
或者使用ActivityOperation上公开的'.New'展示'规则'。
ActivityOperation(rule: .New, identifier: "Authentication", animator: ShrinkAnimator()).execute()
在活动间的转换封装在ActivityOperation结构中。这些可以通过在操作上调用execute()方法来执行(这需要在是应用程序根控制器的ActivityViewController上执行操作)或者通过在应用程序其他位置嵌入的ActivityViewController上调用performActivityOperation实例方法。
activityViewController.performActivityOperation(operation)
ActivityOperation有三个初始化器用于指定过渡动画。
一个用于无动画过渡
ActivityOperation(identifier: "Authentication").execute()
一个用于UIViewAnimationOptions
ActivityOperation(identifier: "Authentication", animationType: .TransitionCurlUp, duration: 0.5).execute()
还有一个用于UIViewControllerAnimatedTransitionings
ActivityOperation(identifier: "Authentication", animator: ShrinkAnimator()).execute()
包含的示例项目和我在GitHub此处的FrameworksPlayground存储库展示了某些示例用法。