• MGJRouter实践总结


    1.创建路由配置类 HZSSchemeConfig 继承自NSObject

    .h类示例

    /*设置
     * 无参数
     */
    UIKIT_EXTERN NSString *const kHZSSettingViewController;

    .m类示例

    NSString *const kHZSSettingViewController = @"HZS://native/HZSSettingViewController";

    2.在需要跳转的类中,将路由注册到路由表中

    + (void)load {
        [MGJRouter registerURLPattern:kHZSSettingViewController toHandler:^(NSDictionary *routerParameters) {
            HZSSettingViewController *vc = [[HZSSettingViewController alloc] init];
            [[UIViewController currentNavigationController] pushViewController:vc animated:YES];
        }];
    }

    3.A类跳转到设置页面 HZSSettingViewController ,并传值 name:zhangsan

    [MGJRouter openURL:kHZSSettingViewController withUserInfo:@{@"name":@"zhangsan"} completion:^(id result) {
    }];

    设置页面,registerURLPattern 方法里可以获取传进来的数据

    NSDictionary *userInfo = routerParameters[MGJRouterParameterUserInfo];

    4.设置页面 HZSSettingViewController 回传数据到A类,传字符串 1

    HZSSettingViewController 类

    @property (nonatomic, copy) void (^attentionBlock)(NSString *attentionStatus);

    设置页面,registerURLPattern 方法里设置回调

    vc.attentionBlock = routerParameters[MGJRouterParameterCompletion];

    在需要传值的地方

    if (self.attentionBlock) {
            self.attentionBlock(@"1");
        }

    A类 openURL 方法的 completion 回调中,可以接收到设置页面回传的值

    上面写了跳原生页面的逻辑,下面需要写全局统一的方法,判断跳原生、H5、小程序,后台根据客户端规则传 jumpType 、module 、detailId 即可

    /// 页面跳转
    /// @param jumpType 0 - 无;1 - 原生;2 - H5;3 - 微信小程序;
    /// @param module 原生跳转模块,或者是小程序的userName,H5的标题
    /// @param detailId 详情页id,或者是小程序的path,H5的地址
    + (void)jumpWithType:(NSString *)jumpType module:(NSString *)module detailId:(NSString *)detailId
    {
    }

     类比文字开头,需要注册以下标识

    /*
     *HZS://native  原生页面
     *HZS://h5          h5页面
     */
    #pragma mark 网页
    NSString *const kHZSHomeWebViewController = @"HZS://h5?detailId=http://";
    NSString *const kHZSHomeWebHttpsViewController = @"HZS://h5?detailId=https://";
    
    #pragma mark 小程序
    NSString *const kHZSMicroProgramePage = @"HZS://microProgramePage";
    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
  • 相关阅读:
    微服务热部署,jrebel激活破解
    微服务改代码热部署
    MYBATIS框架的映射关系
    postgrepsql数据库保留两位有效数字
    It's likely that neither a Result Type nor a Result Map was specified
    idea启动微服务项目报错
    微服务自动加载common包
    No function matches the given name and argument types. You might need to add explicit type casts postgrepsql数据库
    "Connect to localhost:9000 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect",
    链表的排序 (选择和冒泡)
  • 原文地址:https://www.cnblogs.com/huangzs/p/14448207.html
Copyright © 2020-2023  润新知