Route
Route 提供路由跳转功能,支持 pop 和 present。同时解耦页面。
controller 必须实现 RouteProtocol。RouteProtocol 负责实例化 controller 并且传参。
static func instantiate(params: JSON?) -> UIViewController {
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "UserViewController") as! UserViewController
controller.userId = params?["id"].stringValue
controller.userName = params?["name"].stringValue
return controller
}
然后就能注册这个controller到路由里面
Route.register(path: "/user", controller: UserViewController.self)
以后就能通过 url 打开这个 controller
let url = URL(string: "cenarius://route/user?params=%7B%22id%22%3A123%2C%22name%22%3A%22%E4%BA%8C%E5%93%88%22%7D")!
Route.open(url: url, from: self)
/user是path,params是参数的key,value就是后面encode过的JSON字符串。