路由方案

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进行跳转

上一篇 下一篇

猜你喜欢

热点阅读