目录结构
├── SwiftDemo
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ ├── Config
│ │ ├── Const.swift
│ │ └── GYMoyaConfig.swift
│ ├── Controller
│ │ ├── Home
│ │ │ ├── GYHomeViewController.swift
│ │ └── Mine
│ │ ├── GYMineViewController.swift
│ ├── Helper
│ ├── Info.plist
│ ├── Model
│ │ └── GYModel.swift
│ ├── Request
│ │ ├── GYApi.swift
│ │ └── GYNetworkManager.swift
│ ├── Root
│ │ ├── GYRootNavigationController.swift
│ │ ├── GYRootTabBarController.swift
│ │ └── GYRootViewController.swift
│ └── View
│ └── Refresh
│ └── URefresh.swift
结构说明
1. AppDelegate:
1 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { |
AppDelegate是应用的代理,应用级的事件都委托它处理,包含启动退出、推送等事件,以及IM、支付等第三方的回调,AppDelegate作为事件入口,这里使用 GYRootTabBarController 作为 window 打开的页面,所有的页面结构都由 GYRootTabBarController 内来实现。
2. GYRootTabBarController:
设置了 TabBarController 的 viewControllers,这里总共创建了两个 Home 和 Mine。理论上tabbar的样式修改都在这边进行。在 tabbar 的 controller 中,可以使用 controller 的 setTitle 方法,或者使用 navigationItem 的 setTitle 方法,前者可以在 tabbarItem 上显示 title,后者不会。
3. Config 文件夹:
Config 文件夹主要是工程的配置文件,其中 Const.swift 是一些 UI 相关(如颜色和屏幕长宽)的配置,GYMoyaConfig.swift 是配置请求域名的地方。
4. Model 文件夹:
存放所有工程中用到的模型,这些模型继承了 HandyJSON,使用 HandyJSON 处理模型复用
5. request 文件夹:
GYApi.swift 用来存放所有的请求接口,设置接口请求类型、请求参数、requestHeader、单元测试数据。
GYNetWorkManager.swift 封装了三个请求方法,分别是返回 error 对象和只有返回成功的方法。在这里根据业务设置 token 和 判断 Httpstatus 的成功。
6. Controllers 文件夹:
存放所有 controller 文件,其中包括每个 controller 自己的 view 和 cell(如果是 MVVM,可以放 viewModel 文件)。
7. Views 文件夹中:
存放所有复用的 view 文件。
本文代码 git 仓库。