代码组织框架

一、一般的目录结构

VC:ViewControllers
VM:ViewModels
Coordinator:大门
Controller:控制器/管理器

二、Coordinator总协议

每个Coordinator必须继承的protocol

protocol Coordinator: class {
    var coordinators: [Coordinator] { get set }
}

extension Coordinator {
    func addCoordinator(_ coordinator: Coordinator) {
        coordinators.append(coordinator)
    }

    func removeCoordinator(_ coordinator: Coordinator) {
        coordinators = coordinators.filter { $0 !== coordinator }
    }

    func removeAllCoordinators() {
        coordinators.removeAll()
    }
}

三、实现模块Coordinator

  1. 继承Coordinator
final class SettingsCoordinator: Coordinator {
    ...
  //创建对应的VC
    lazy var rootViewController: SettingsViewController = {
        let controller = SettingsViewController(
            session: session,
            keystore: keystore
        )
        controller.delegate = self
        controller.modalPresentationStyle = .pageSheet
        return controller
    }()

  //构造方法
    init(
        navigationController: NavigationController = NavigationController()
    ) {
        self.navigationController = navigationController
        self.navigationController.modalPresentationStyle = .formSheet
    }

  //start
    func start() {
        navigationController.viewControllers = [rootViewController]
    }
   //Coordinator自己也要接收来自内部ViewController的回调:
  //就是上面构造时的
    controller.delegate = self

//一会也有对应的delegate,用于返回coordinator的返回值,如:

protocol SettingsCoordinatorDelegate: class {
    func didRestart(with account: WalletInfo, in coordinator: SettingsCoordinator)
    func didPressURL(_ url: URL, in coordinator: SettingsCoordinator)
    func didCancel(in coordinator: SettingsCoordinator)
}

四、Coordinator模块间相互调用

比如要调用钱包Coordinator

    private func showWallets() {
        let coordinator = WalletsCoordinator(keystore: keystore, navigationController: navigationController)
        coordinator.delegate = self
        navigationController.pushCoordinator(coordinator: coordinator, animated: true)
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 虚的极处便是“道”,用个“致”字,似乎有个动作才能到达似的,不过用人的语言文字来表达,这似乎又无法避免。 ...
    隆云阅读 3,214评论 0 1
  • 有姑娘想拼命却找不着动力,便观望着、渴望着等人来拯救,做着意中人踩着七色彩云来娶你的梦。而有些姑娘却一直在努力,懂...
    洋小妹儿阅读 1,352评论 0 0
  • 爱情其实并没有我们想象的那么无坚不摧,有时候,它甚至还脆弱不堪。可即便如此,我们依然不能说,那不是爱情,因为任何一...
    跳舞的小雪人阅读 1,326评论 0 0
  • 吃,是人生中最重要的事情了吧。 做妈前,最喜欢出去二人世界吃美食,即使不出门也是叫外卖的多,那时的外卖可没现在这么...
    小伊Eva阅读 1,456评论 0 2