VVRouter 0.1.2

VVRouter 0.1.2

shendongmomo13014维护。



VVRouter 0.1.2

VVRouter

CI Status Version License Platform

入门

VVRouter 是一个带有协议的 URL 路由库,旨在使其非常容易跳转到任何 viewController。使用正则匹配绑定 rulesviewController

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'

作者

[email protected]

许可证

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