AtlasFramework 1.7.0

AtlasFramework 1.7.0

Stefan Engel维护。



  • Engel, Stefan

Atlas

Atlas是一个帮助您使用MVVM-C架构模式结构化您的基于TabBar的iOS应用的框架。

特点

  • 关注点分离
  • 避免模板代码,再也无需编写协调器
  • 强制执行MVVM架构模式

Atlas框架基于在Steve Scott的MVVM-C演讲中引入的概念

Architecture used within a Todo app

入门指南

安装

将以下代码添加到您的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。目前支持modalpush

每个工厂的另一个要求是它必须知道它可以导航到哪些模块。这是通过实现target方法来完成的,其中提供了一个标识符,匹配的工厂必须返回。

所有作为导航目标的模块都应在符合MVVMCNavigationTarget枚举中定义。

示例应用

示例应用包含一个带有蓝色和绿色屏幕的标签栏。

蓝色屏幕演示了如何模态地呈现另一个屏幕。黄色屏幕显示随着时间的推移而变化的数据模型。这是一个示例,说明了如何监听模型的变化并将其反映在视图模型和视图中。绿色和红色屏幕展示了如何将数据从一个屏幕传递到另一个屏幕。

Structure of the demo app