Lepaya-Coordinator 0.0.13

Lepaya-Coordinator 0.0.13

Alessio Sardella 维护。



  • Alessio Sardella

Lepaya-Coordinator

这是一个实用的 pod,可以根据需要轻松实现 Coordinator 设计模式。如果您的应用是标签页式的,您可以从以下几行代码开始

    self.window = UIWindow(frame: UIScreen.main.bounds)
        
    let appCoordinator = TabCoordinator(window: self.window!)
    appCoordinator.setup(tabNames: ["first", "second"],
                            tabImages: ["tab_image_01", "tab_image_02"]) { () -> ([NCCoordinator]) in
                            
                            let firstTab = NCCoordinator(rootController: RedController())
                            
                            let secondTab = NCCoordinator(rootController: GreenController())
                            
                            return [firstTab, secondTab]
                            
    }
    appCoordinator.firstTabToLoad = 1 // select which tab will be visible at launch
    appCoordinator.start()

如果您喜欢简单的导航

    let appCoordinator = NCCoordinator(rootController: RedController())
    appCoordinator.start(window: self.window!)

要压入新的 Controller

    guard let navigation = self.navigationController else { return } 
    let green = GreenController()
    let coordinator = VCCoordinator(push: green, presenter: navigation)
    green.coordinator = coordinator
    coordinator.start()

从一个控制器以模态形式呈现一个新的控制器

    guard let navigation = self.navigationController else { return }
    let green = GreenController()
    green.loadButtonBack()
    let coordinator = VCCoordinator(presentModally: green, navigation: navigation, presenter: self)
    green.coordinator = coordinator
    coordinator.start()
 

不必再疑惑是否需要关闭或弹出控制器才能返回,请使用 EUIViewController 扩展方法

self.goBack()

注意:CoordinatorPackage 使用名为 ExtendedViewController 的 UIViewController 子类,该子类扩展了类的一些基本功能

  • isModal 可以立即知道您正在处理的控制器是以模态形式呈现还是不是。
  • coordinatorVCCoordinator,用于返回到上一个控制器。
  • 使用 setTabBarControllerDelegate() 将控制器设置为 UITabBarControllerDelegate 以能够加载和重新加载(只要它是可见的)每个标签的 rootingViewController。

整个应用将由 CoordinatorSession.shared 管理,它持有对 TabCoordinatorNCCoordinator 的引用。要执行对标签选择的自定义操作,您可以使用 TabCoordinatorDelegate

CoordinatorSession.shared.tabCoordinator?.delegate = self

并实现以下方法

func reloadRootController(_ controller: EUIViewController, atIndex index: Int)

使用 CocoaPods 进行安装

pod 'Lepaya-Coordinator'

或者只需下载/克隆仓库,并将 'Sources' 文件夹的内容拖放到您的项目中。