UCRouterSwift 0.2.0

UCRouterSwift 0.2.0

‘RPGLiker’ 维护。



  • Link913

UCRouterSwift

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从示例目录运行 pod install

需求

安装

UCRouterSwift 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'UCRouterSwift'

如何使用

参考 示例

  • 1. 设置导航协议,URL 过滤协议在主工程中的代理

      UCRouter.default.setNavgationAndFilter(navgation: NavgationDelegate(), filter: FilterDelegate())
    
  • 2. 抽出一个可以共同依赖的协议层,这些协议需要继承 UCRoutable,在 register 函数中可以对 URL 进行注册。另外,如果我们想本地对外界提供一些支持,不要通过 URL 的方式,这里可以在各自的协议声明一些函数、参数和返回值都必须是基本类型,防止耦合。可以参考下 ModuleAProtocolModuleA 两个文件。

这里举一些 URL 注册的例子

UCRouter.default.registUrl("oral/test") { (routerInfo) -> UIViewController? in
    return VC2()
}
 UCRouter.default.registUrl("oral") { (routerInfo) -> UIViewController? in
    return VC2()
}
 UCRouter.default.registUrl("web") { (routerInfo) -> UIViewController? in
    guard let url = routerInfo.urlQuery?["url"] else {return nil}
    let webView = WKWebView(frame: UIScreen.main.bounds)
    let vc = UIViewController()
    vc.view.addSubview(webView)
    webView.load(URLRequest(url: URL(string: url)!))
    
    return vc
}

调用的例子

func openWeb(_ sender: Any) {
    UCRouter.default.routeUrlStr("demo://web/?url=https://www.baidu.com", navgationType: .push(animated: true), params: ["abc": "111"])
}
func normalJump(_ sender: Any) {
    UCRouter.default.routeUrlStr("demo://oral/test?haha=111", navgationType: .push(animated: true), params: ["abc": "111"])
}

协议层是可以大家一起去依赖的,他并不会耦合什么东西,真正实现这些协议的其实还是在各自的模块中。

  • 3. 由于 Swift 自注册没有什么好的方案,这里需要手动对实现协议的各个 Module 进行注册

      UCRouter.default.registProtoclAndModule(UCRouterKey<ModuleAProtocol>(), ModuleA.self)
    

作者

Link913, [email protected]

许可证

UCRouterSwift 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。