Atlas
Atlas是一个帮助您使用MVVM-C架构模式结构化您的基于TabBar的iOS应用的框架。
特点
- 关注点分离
- 避免模板代码,再也无需编写协调器
- 强制执行MVVM架构模式
Atlas框架基于在Steve Scott的MVVM-C演讲中引入的概念。
入门指南
安装
将以下代码添加到您的Cartfile中
github "dm-drogeriemarkt/Atlas" ~> 1.1.0
或者通过CocoaPods使用框架: pod 'AtlasFramework', '1.1.0'
配置
创建您的模型并使其符合MVVMCModelProtocol。在AppDelegate中创建AppCoordinator并保存对该对象的引用。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let model = DemoModel()
appCoordinator = MVVMCAppCoordinator(model: model, window: window!, factories: [BlueFactory(), GreenFactory()])
appCoordinator.start()
return true
}
对于您的应用中的每个模块,如果它应出现在标签栏中,则创建一个符合MVVMCTabBarFactoryProtocol
的工厂,否则创建一个符合MVVMCFactoryProtocol
的工厂。
工厂必须实现createView
方法以返回特定模块的视图。这是您希望创建视图模型的地方。将应用程序模型的引用传递给createView
。
如果您想创建一个在条件变化时需要重新创建的视图容器,则实现update
方法。要触发更新,请在协调器上调用requestUpdate
。
每个工厂必须决定其视图的显示方式,通过指定transitionType
。目前支持modal
和push
。
每个工厂的另一个要求是它必须知道它可以导航到哪些模块。这是通过实现target
方法来完成的,其中提供了一个标识符,匹配的工厂必须返回。
所有作为导航目标的模块都应在符合MVVMCNavigationTarget
枚举中定义。
示例应用
示例应用包含一个带有蓝色和绿色屏幕的标签栏。
蓝色屏幕演示了如何模态地呈现另一个屏幕。黄色屏幕显示随着时间的推移而变化的数据模型。这是一个示例,说明了如何监听模型的变化并将其反映在视图模型和视图中。绿色和红色屏幕展示了如何将数据从一个屏幕传递到另一个屏幕。