路由方案
2022-04-01 本文已影响0人
看谷秀
一: 路由 跳转 XXURLRouter
目的:做push 控制器跳转
一: 注册
registerURLPattern:**路由地址** toHandler:**回调**
+ (void)registerURLPattern:(NSString *)URLPattern toHandler:(XXURLRouterHandler)handler;
目的:1设置路由地址 例如: XiongAn://Home/browse
目的:2 设置回调block ;包含跳转控制器 跳转控制器设置参数等
实现逻辑: 通过路由地址设置block的存储位置,保存在一个self.rotes的字典内.
例如 :
XX :{
Home:{
browser:{
“-”:block // 这是跳转控制器代码
}
}
}
二:跳转
openUrl:**路由地址** withUserInfo:**参数**
+ (void)openURL:(NSString *)URL withUserInfo:(NSDictionary * __nullable)userInfo;
目的1 :设置路由地址
目的2: 设置参数(包含 当前导航控制器,跳转的url等)
实现逻辑: 通过路由地址,去self.rotes字典中找到之前注册的block
调用block(参数),参数传过去,
触发注册回调,设置参数,完成push跳转
总结:
一: 注册:
load注册跳转代码, 利用路由地址,把跳转控制器代码block存储在数组中.
xx://module/scan (self.routes)
xx:{
module:{
scan:{
“-”:"<__NSGlobalBlock__: 0x1048252b0>"; // 跳转控制器代码
}
}
}
二: 调用跳转方法
根据地址: xx://module/scan 去 self.routes 数组中取出跳转控制器block,执行block
根据地址去缓存数组中取出跳转控制器block代码, 执行block进行跳转