注册到路由表中的VC默认是使用target open的方式进行跳转。
通过URL找到对应的VC后将URL中参数、URL、回调(这三个属性是通过关联对象写在了VC的extension中)赋值给目标VC,然后进行跳转。
跳转一般分为push和present,跳转的方式也是通过VC的一个属性(同样是关联对象)来确定。
代码
//target open
if targetClass is UIViewController.Type{
var targetObj:UIViewController? = nil
if let cls = targetClass as? HYRoutable.Type {
targetObj = cls.initWithRouterParams(combineParams)
}else {
targetObj=(targetClass as! UIViewController.Type).init()
}
targetObj!.routerParams = combineParams
targetObj!.routerURL = url
targetObj!.routerCompletion = completion
//pagemode
return targetObj!.pageOpenMode.open(target: targetObj!)
}
网友评论