一个用于 iOS 的 URL 路由器,使用 Swift 2.2 编写,灵感来自 HHRouter 和 JLRoutes。
在您的项目中添加 SwiftRouter.swift
。
在您的自定义 ViewController 中定义属性
class UserViewController: UIViewController {
var userId:String?
var username:String?
var password:String?
}
将 URL 映射到 ViewController
import SwiftRouter
let router = Router.sharedInstance
router.map("/user/:userId", controllerClass: UserViewController.self)
直接从 URL 获取 ViewController 实例。参数将被自动解析
let vc = router.matchController("/user/1?username=hello&password=123")!
XCTAssertEqual(vc.userId, "1")
XCTAssertEqual(vc.username, "hello")
XCTAssertEqual(vc.password, "123")
这将使用 init() 方法加载控制器。如果您想从 storyboard 加载 view controller - 使用
let vc = router.matchControllerFromStoryboard("/user/1?username=hello&password=123",
storyboardName: "MyStoryboard")!
此代码将从 MyStoryboard.storyboard 加载控制器。只需记住在 storyboard 中将控制器标识符设置为类名。在此例中为 UserViewController
。
推送自定义 ViewController
router.routeURL("/user/123", navigationController: self.navigationController!)
// The custom ViewController will be pushed with parameters.
定义您的自定义处理函数并将其映射到 URL
router.map("/user/add", handler: { (params:[String: String]?) -> (Bool) in
XCTAssertNotNil(params)
if let params = params {
XCTAssertEqual(params["username"], "hello")
XCTAssertEqual(params["password"], "123")
}
return true
})
从路由器调用此处理程序
router.routeURL("/user/add?username=hello&password=123")
// The handler function will be called with parameters.