VVRouter
入门
VVRouter 是一个带有协议的 URL 路由库,旨在使其非常容易跳转到任何 viewController。使用正则匹配绑定 rules
和 viewController
Router.open(url: "/pageDetail/1234567")
全局配置
Router.registerRouters(dictionary: ["/blue": BlueViewController.self,
"/red/(\\d+)": RedViewController.self,
"/yellow/(\\S+)": YellowViewController.self])
或者您可以使用枚举
enum RouterUrl : String {
case demo = "/demo"
case blue = "/blue"
case red = "/red/(\\d+)"
case yellow = "/yellow/(\\S+)"
}
Router.registerRouters(dictionary: [RouterUrl.demo.rawValue: DemoViewController.self,
RouterUrl.blue.rawValue: BlueViewController.self,
RouterUrl.red.rawValue: RedViewController.self,
RouterUrl.yellow.rawValue: YellowViewController.self])
如果您想要一个默认的根 ViewController 来推送,可以设置如下
Router.shared.rootVC = self.window?.rootViewController
协议
所有支持 VVRouter 的 ViewController 必须确认 VVRouterProtocol
extension YellowViewController: RouterProtocol {
static func router(url: String, params: [AnyObject]) -> UIViewController? {
if url == "/yellow/(\\S+)" {
let yellowVC = YellowViewController()
if let bookname = params[1] as? String {
yellowVC.bookname = bookname
}
return yellowVC
}
return YellowViewController()
}
}
用途
Router.open(url:"ssr://yellow/welcome")
Router.open(url:URL(string: "ssr://yellow/welcome")!)
Router.open(url:"ssr://yellow/welcome", from: self.navigationController)
Router.open(url:"ssr://yellow/welcome", from: self.navigationController, actionType: .push)
默认的打开动作类型是推送,也支持显示
支持 UIApplication 打开
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return Router.open(url: url)
}
对于一些需要自己处理的路由,您可以通过 VVRouterDelegate
进行拦截
func interceptRouter(url: URLConvertible) -> Bool {
// do some stuff
return true
}
示例
要运行示例项目,请克隆仓库,然后从 Example 目录运行 pod install
。
需求
VVRouter 需要 iOS 9.0,swift_version: 5.0
安装
通过 CocoaPods 可以获取 VVRouter。要安装它,只需将以下行添加到您的 Podfile 中
pod 'VVRouter'
作者
许可证
VVRouter 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。