UCRouterSwift
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行 pod install
需求
安装
UCRouterSwift 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'UCRouterSwift'
如何使用
参考 示例
-
1. 设置导航协议,URL 过滤协议在主工程中的代理
UCRouter.default.setNavgationAndFilter(navgation: NavgationDelegate(), filter: FilterDelegate())
-
2. 抽出一个可以共同依赖的协议层,这些协议需要继承
UCRoutable
,在register
函数中可以对 URL 进行注册。另外,如果我们想本地对外界提供一些支持,不要通过 URL 的方式,这里可以在各自的协议声明一些函数、参数和返回值都必须是基本类型,防止耦合。可以参考下ModuleAProtocol
和ModuleA
两个文件。
这里举一些 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 文件。